サポート > インポートとエクスポート機能活用ガイド(R6) > コマンドラインによる操作

大量データのインポート・エクスポート処理では、Web ブラウザから実行するとタイムアウト(時間切れ)となってしまうことがあります。このような場合は本手順に示す方法により、コマンドラインによる対応を行うことができます。

InitLoader の概要

ここでは、コマンドラインによるデータのインポートとエクスポートを行う方法を詳細に説明します。 Wagby はこの処理を行なうための InitLoader というユーティリティプログラムを提供しています。

InitLoader は「1つのXMLファイル」を「1レコード」として扱い、データベースとのやりとり(インポート・エクスポート)を行います。 具体的な XML ファイルは次のようになっています。

<?xml version="1.0" encoding="UTF-8"?>
<staff>
  <staffid>1000</staffid>
  <name>スタッフ1</name>
  <birth>1972-05-15</birth>
</staff>

(*) 要素名は、モデル名(英語)およびモデル項目名(英語)が使われます。

バッチスクリプト

InitLoader は実行時にさまざまなパラメータを指定できます。詳細は「InitLoaderの詳細」をお読み下さい。

Wagby には、定型的な InitLoader 処理をコマンドラインで実行するためのバッチスクリプトが含まれています。ここでは、これらのバッチスクリプトを紹介します。

スクリプト名 用途 引数 利用例
init_db 外部テーブルの初期化 (*1) モデル名(英語) init_db.bat (*2)
init_db.bat staff
drop_db 外部テーブル定義の削除 モデル名(英語) drop_db.bat (*2)
drop_db.bat staff
export_db データのエクスポート エクスポート対象フォルダ export_db.bat ..\..\export\YOURFORLDER
import_db データのインポート インポート対象フォルダ import_db.bat ..\..\export\YOURFORLDER
(*1) $(APPHOME)\webapps\wagby\WEB-INF\export\init フォルダに含まれている初期データをインポートします。(すでにテーブルが存在する場合は、処理をスキップします。この場合は drop_db スクリプトを用いて外部データベースを初期化してください。)
(*2) モデル名(英語)を省略した場合は、すべてのモデルが対象となります。

コマンドラインからのエクスポート

コンソール画面からコマンドを入力することで、エクスポート処理を行なうことができます。

  1. Web アプリケーションを停止します。
  2. コマンドプロンプトを開きます。
  3. wagbyapp フォルダに含まれる bin フォルダに移動します。
    > cd C:\Wagby-6.0.0\wagbyapp\bin
    
  4. export_db.bat を実行します。引数に出力先のフォルダを指定します。フォルダ名は「data_」を接頭語とし、年月日時分秒の情報を続けるとよいでしょう。(時分秒については、省略しても結構です。あとで思い出せるようなキーワードを付与するといった工夫でもよいでしょう。)
    R6.3.0 より、引数を指定しない場合は、project_env.xls で指定したフォルダ(標準では「..\..\export」)に出力されます。フォルダ名は、「data_"出力した時間(年月日時分秒)"」となります。
    > export_db.bat ..\..\export\data_20080901090000
    
  5. 処理が終了すると $(DEVHOME)/export フォルダ内に、上で指定したフォルダ名でエクスポートデータが生成されます。
  6. コマンドプロンプトを終了します。
    > exit
    
  7. Web アプリケーションを起動します。

R5.7.1 より前の Wagby をお使いの方は、こちらをお読みください。

Wagby に内蔵のデータベースをお使いの場合、エクスポート処理の前に Web アプリケーションを停止する必要があります。
ただしエクスポート中にデータが更新されることはあまりのぞましくありません。できるだけ Web アプリケーションを停止して行うか、あるいは誰もログオンしていないときにエクスポート処理を行なうことを推奨します。

コマンドラインからのインポート

コンソール画面からコマンドを入力することで、インポート処理を行なうことができます。

エクスポートデータを一括してすべてインポートする

この場合はデータを完全に初期化することになります。同ディレクトリにある drop_db.bat をはじめに実行し、テーブル情報を消去します。

> drop_db.bat

具体的な手順は次のようになります。

  1. Web アプリケーションを停止します。
  2. コマンドプロンプトを開きます。
  3. wagbyapp フォルダに含まれる bin フォルダに移動します。
    > cd C:\Wagby-6.0.0\wagbyapp\bin
    
  4. 上記にあるように、drop_db.bat を実行します。(※)
    > drop_db.bat
    
  5. import_db.bat を実行します。引数に(取り込みたいデータが格納されている)フォルダ名を指定します。
    > import_db.bat ..\..\export\data_20080901090000
    
  6. コマンドプロンプトを終了します。
    > exit
    
  7. 終了後、Web アプリケーションを起動します。
※ システム入れ替えの場合は、旧版のアプリケーションで drop_db.bat を行うようにしてください。新版ではテーブル構成が変わっている可能性があるため、新版の drop_db.bat を行っても、いくつかのテーブルが消去されないことになります。

特定のデータをインポートする

インポートするデータの主キーに "-1" を設定することで、新規登録および追加分だけの登録・更新を行うことができます。この場合は drop_db.bat によるテーブルの削除処理は不要です。

特定のテーブルに対してインポート処理を行なう方法の詳細は「InitLoaderコマンドの詳細」をお読みください。

R5.7.1 より前の Wagby をお使いの方は、こちらをお読みください。
インポートを行う場合は Web アプリケーションを停止してから行ってください。

大量データ処理の場合の追加対応

対象データが大量の場合、標準のメモリサイズでは足りずに「Out Of Memory」(メモリ不足)というエラーになることがあります。 この場合は、上記スクリプトファイルにおいて、次に示す太字の部分を追加・修正してください。

@ECHO OFF
...
"%JAVA_HOME%\bin\java"
-Xmx512m
-XX:MaxPermSize=128m
-Dcatalina.home=".."
-jar InitLoader.jar auto -all
-check_exists_table true
-c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
-d %1
(*) 実際には 1 行です。

-Xmx の指定を行っている行は、追加しています。この例では "512m" (512メガバイト)のメモリ割当を行っていますが、指定値については PC に搭載されている実メモリサイズを超えないようにしてください。
また、MaxPermSize 値の標準は "128m" (128メガバイト)となっています。

-Xmx 値と -XX:MaxPermSize 値を調整してください。

UNIX 系 OS の場合

Linux, Solaris, Mac OS X といった UNIX 系 OS で Web アプリケーションを運用している場合は、上記スクリプトファイルの拡張子「.bat」を「.sh」に読み替えて対応してください。

スクリプト経由ではなく、直接 InitLoader を実行する

InitLoader コマンドを直接、コンソールから操作する場合は Java を別途、インストールしておく必要があります。 Java のインストール方法については「Java のインストール」をお読みください。 また、このとき catalina.home 変数の指定を忘れないようにしてください。 (*1)

(*1) 内蔵データベースの場合、データベースの接続先としてinitdb.xmlに下記のように記述してあります。
url="jdbc:hsqldb:file:${catalina.home}/webapps/wagby/WEB-INF/data/wagbydb"
このため、catalina.homeが設定されている必要があります。

Windows OS 利用時の入力例

環境変数 catalina.home と java.io.tmpdir を実行時に指定します。$(APPHOME)\binをカレントディレクトリにし、下記のように指定します。

"%JAVA_HOME%\bin\java"
-Xmx512m
-XX:MaxPermSize=192m
-Dcatalina.home=".."
-Djava.io.tmpdir="..\temp"
-jar InitLoader.jar
-c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml

(*1) 入力は一行にまとめてください。
(*2) メモリサイズはアプリケーションの規模によって適切に変更してください。

R6.8 Update 2 より前の Wagby をご利用の方

R6.8 Update 2 までの版をご利用の場合、バージョンアップなどで過去のエクスポートデータをコマンドラインツールを使ってインポートした後、jfcmodel,jfcmodel4dm,jfclicenseholder の3つのモデルについて、初期データ(data_init)から再読み込みを行う必要があります。

具体的には、下記のコマンドを実行することで初期データがインストールされます。それぞれ1行で実行して下さい。

  1. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar drop -t jfcmodel -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
  2. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar drop -t jfcmodel4dm -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
  3. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar drop -t jfclicenseholder -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
  4. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar auto -t jfcmodel -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml -d ..\..\export\data_init
  5. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar auto -t jfcmodel4dm -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml -d ..\..\export\data_init
  6. "%JAVA_HOME%\bin\java" -Dcatalina.home=".." -Djava.io.tmpdir="..\temp" -jar InitLoader.jar auto -t jfclicenseholder -c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml -d ..\..\export\data_init
※ webapps\wagby\WEB-INF の wagby は project.xls で指定したプロジェクト識別子となりますので、デフォルトの wagby から変更されている場合は、合わせてご変更下さい。
※ プロジェクト(英語名)が空白の場合、上記のパス "webapps\wagby\WEB-INF\..." を "webapps\ROOT\WEB-INF\..." に置換してください。

この手続きは、R6.8 Update 3 以降のWagbyでは不要となります。

R5.7.1 より前の Wagby をご利用の方

Wagby R5.7.0 以前の版では、export_db.bat (.sh) および import_db.bat (.sh) ファイルは含まれておりません。 このファイルをご自身でご用意ください。以下にサンプルを示します。

export_db.bat

@ECHO OFF
"%JAVA_HOME%\bin\java"
-XX:MaxPermSize=128m
-Dcatalina.home=".."
-jar InitLoader.jar export -all
-check_exists_table true
-c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
-d %1
(*1) "%JAVA_HOME..." で始まる行は、実際には一行です。改行しないようにしてください。
(*2) 最後の行に含まれる "wagby" は、お使いのプロジェクト(英語名)に該当します。

import_db.bat

@ECHO OFF
"%JAVA_HOME%\bin\java"
-XX:MaxPermSize=128m
-Dcatalina.home=".."
-jar InitLoader.jar auto -all
-check_exists_table true
-c ..\webapps\wagby\WEB-INF\export\conf\initdb.xml
-d %1
(*1) "%JAVA_HOME..." で始まる行は、実際には一行です。改行しないようにしてください。
(*2) 最後の行に含まれる "wagby" は、お使いのプロジェクト(英語名)に該当します。