名前
irepconvert - Symfoware/RDBへエントリの一括投入データ形式の作成
形式
irepconvert -R repository -f file [-o directory] [-from type] [-to type] [-n] [-s] [-i] [-p platform]
機能説明
リポジトリのデータベースとしてSymfoware/RDBを利用し、大量のエントリデータを短時間で一括投入する場合に使用します。ただし、Symfoware Server Lite Editionを使用している環境では、本機能を使用できません。
irepconvertコマンドはLDIFファイルを入力データとし、Symfoware/RDBのデータロード機能で使用する3つのデータファイル、3つのプロシジャルーチン、および1つのバッチファイル(Windows (R))、またはシェルスクリプト(SolarisおよびLinux)を出力します。
バッチファイル、またはシェルスクリプトは、Symfoware/RDBのデータロード機能を利用してエントリを登録することで、Interstage ディレクトリサービスを経由する場合に比べて短時間でエントリを登録できます。
データファイル、プロシジャルーチン、およびバッチファイル、またはシェルスクリプトの出力名は、fileパラメタで指定されたファイル名にテーブル名、プロシジャルーチン名を連結した名前になります。
-fオプションの「file」が「C:\temp\entry.ldif」の場合
[データファイル] entry.ldif_DS_SCOPE_DSI.dat entry.ldif_DS_FILTER_DSI.dat entry.ldif_DS_ENTRY_DSI.dat [プロシジャルーチン] entry.ldif_RDB_DROP_PROCEDURE.sql entry.ldif_RDB_SELECT_SEQ.sql entry.ldif_RDB_CRT_PROCEDURE.sql [バッチファイル] entry.ldif_LOADDAT_EXECSQL.bat |
-fオプションの「file」が「/tmp/entry.ldif」の場合
[データファイル] entry.ldif_DS_SCOPE_DSI.dat entry.ldif_DS_FILTER_DSI.dat entry.ldif_DS_ENTRY_DSI.dat [プロシジャルーチン] entry.ldif_RDB_DROP_PROCEDURE.sql entry.ldif_RDB_SELECT_SEQ.sql entry.ldif_RDB_CRT_PROCEDURE.sql [シェルスクリプト] entry.ldif_LOADDAT_EXECSQL.sh |
本コマンドはリポジトリが動作するマシンで実行し、出力されたデータファイル、およびプロシジャルーチンの登録はSymfoware/RDBが動作するマシンで実行します。データファイル、プロシジャルーチンはバッチファイル、またはシェルスクリプトで登録します。
以下に、irepconvertコマンドの引数を説明します。
- -R repository
対象のリポジトリ名を指定します。英大小文字は区別しません。
- -f file
エントリの追加情報を記述したファイルをfileパラメタに指定します。
エントリの追加情報は、LDIF標準形式で記述されている必要があります。詳細については、“ディレクトリサービス運用ガイド”の“データの作成”-“LDAPデータ交換形式(LDIF)を使う”の“LDIF標準形式”を参照してください。なお、本コマンドでは“LDIF更新形式”は使用できません。
LDIFファイルのコード系は必要に応じて、-fromオプションで指定してください。
- -o directory
バイナリデータファイルなどを出力するディレクトリ名を指定します。本オプションを省略すると、カレントディレクトリに出力します。
- -from type
LDIFファイルのコード系を指定します。英大小文字は区別しません。
指定できるコード系と値は次のとおりです。
コード系 | 指定する値 |
---|
日本語EUC | EUC |
Shift-JIS | SJIS |
UTF-8 | UTF8 |
本オプションを省略すると、SJISとみなします。
本オプションを省略すると、ロケール環境(LANG環境変数)に従います。
LANG環境変数 | コード系 |
---|
ja_JP.PCK | Shift-JIS |
ja_JP.UTF-8 | UTF-8 |
ja japanese ja_JP.eucJP その他 | 日本語EUC |
本オプションを省略すると、UTF-8とみなします。
- -to type
データベースのコード系を指定します。指定できるコード系、初期値については、-fromオプションを参照してください。
- -n
画面出力(正常終了メッセージ)を抑制します。
- -s
スキーマチェックを抑制します。
- -i
公開ディレクトリ、および初期ツリー作成を抑制します。
-iオプションを指定しない場合、公開ディレクトリ、および初期ツリーとして、5個のエントリが追加されます。詳細については、“ディレクトリサービス運用ガイド”の“リポジトリの作成”を参照してください。
- -p platform
データベースのプラットフォームを指定します。英大小文字は区別しません。
指定できるプラットフォームと値は次のとおりです。
データベースのプラットフォーム | 指定する値 |
---|
Windows | WIN |
Linux | LIN |
Solaris | SOL |
本オプションを省略すると、本コマンドを実行するプラットフォームが指定されたとみなします。
注意事項
本コマンドは、管理者権限で実行してください。
本コマンドでは、LDIFファイルのフォーマットチェックだけを行います。以下に記述したチェックは行いませんので、事前にLDIFファイルの記述内容を確認してください。
本コマンド実行中は、該当リポジトリを起動できません。
データファイルの移入後、irepanalyzeによる最適化情報の設定までの間、リポジトリは停止した状態で実施してください。リポジトリを起動した状態で実施すると、データベースの一意制約違反などのエラーが発生することがあります。
-fオプション、-oオプションで指定するパラメタに空白文字が含まれる場合は、ダブルクォーテーション(")で囲んで指定してください。
リポジトリ作成時に作成する「公開ディレクトリ、および初期ツリー」はデフォルトで自動的にデータファイルに書き込まれます。
本コマンドで作成されたバッチファイル、またはシェルスクリプトを実行する前
バッチファイル、またはシェルスクリプトの格納ディレクトリに移動して、実行してください。
Symfoware/RDBのライブラリパスが設定されていることを確認してください。
バッチファイル、またはシェルスクリプトを編集して、非対話形式にできます。編集する項目については、“使用例(非対話形式)”を参照してください。
LDIFファイルに「公開ディレクトリ、および初期ツリー」が含まれる場合、本コマンドが自動的にデータファイルに「公開ディレクトリ、および初期ツリー」を追加するため、二重で「公開ディレクトリ、および初期ツリー」がデータファイルに登録され、データベースの一意制約違反などのエラーが発生することがあります。LDIFファイルに「公開ディレクトリ、および初期ツリー」を含めない。または、-iオプションで「公開ディレクトリ、および初期ツリー」の作成を抑止してください。
本コマンドで作成されたバッチファイル、またはシェルスクリプトを実行した場合
データベースシステム名、データベース接続パスワードの入力を対話形式で求められます。
データベース接続パスワードを誤って指定すると、内部的に実行するrdbexecsqlコマンドでエラーが発生しますが処理は中断せずに実行されます。実行時のエラー情報を参照し、正しいデータベース接続パスワードを指定して再度実行し直してください。
"[ERR] Not found resource file."が出力された場合、本コマンドで出力されたファイルが全て同一ディレクトリに格納されているか確認してください。
「Ctrl+C」などで強制終了しないでください。データベースの整合性が保証できなくなります。
Symfoware/RDBに登録済みのエントリデータを削除した後に、エントリの追加情報から作成したエントリデータを登録します。
本コマンドで作成されたバッチファイル、またはシェルスクリプトを実行した後
画面上に、Symfoware/RDBコマンド(SQL文)と実行結果が出力されます。Symfoware/RDBコマンド(SQL文)でエラーが発生していないことを確認してください。エラーが発生していた場合、Symfoware Serverのマニュアルを参照して対処してください。そして、再度、バッチファイル、またはシェルスクリプトを実行してください。
同一ディレクトリにrdbexecsql.hstファイルが出力されます。(rdbexecsql.hstファイルには、Symfoware/RDBコマンド(SQL文)が出力されています。)
使用例(対話形式)
以下の使用例で、表示上折り返していても、実行時には、改行を入れないで1行で入力してください。以下の太字の部分が実行するコマンド入力例です。
-fオプションの「C:\temp\entry.ldif」からバイナリデータを作成し移入する例
> irepconvert -R rep001 -f C:\temp\entry.ldif -o C:\temp IREP: 情報: irep10850: irepconvert コマンドが正常に完了しました。(エントリ数=6) [rep001]
> cd C:\temp
> dir /B entry.ldif_DS_ENTRY_DSI.dat entry.ldif_DS_FILTER_DSI.dat entry.ldif_DS_SCOPE_DSI.dat entry.ldif_LOADDAT_EXECSQL.bat entry.ldif_RDB_CRT_PROCEDURE.sql entry.ldif_RDB_DROP_PROCEDURE.sql entry.ldif_RDB_SELECT_SEQ.sql
> entry.ldif_LOADDAT_EXECSQL.bat Enter the RDB system name:DSDBSYS <RETURN> Information of the entry registration. RDB system name :DSDBSYS Database name :DSDB Database connection user ID :Administrator Start registering?[y,n]:y <RETURN> ...(1 stage of 6) loading entry.ldif_DS_SCOPE_DSI.dat rdbsloader -mi -i DSDB.DS_SCOPE_DSI -o C:\temp\entry.ldif_DS_SCOPE_DSI.dat qdg12055i:11件のデータを格納します (システム名=DSDBSYS) qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(2 stage of 6) loading entry.ldif_DS_FILTER_DSI.dat rdbsloader -mi -i DSDB.DS_FILTER_DSI -o C:\temp\entry.ldif_DS_FILTER_DSI.dat qdg12055i:106件のデータを格納します (システム名=DSDBSYS) qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(3 stage of 6) loading entry.ldif_DS_ENTRY_DSI.dat rdbsloader -mi -i DSDB.DS_ENTRY_DSI -o C:\temp\entry.ldif_DS_ENTRY_DSI.dat qdg12055i:117件のデータを格納します (システム名=DSDBSYS) qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(4 stage of 6) executing entry.ldif_RDB_DROP_PROCEDURE.sql rdbddlex -d DSDB C:\temp\entry.ldif_RDB_DROP_PROCEDURE.sql qdg12228i:ルーチン削除の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:順序削除文の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:順序定義文の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:ルーチン削除の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:順序削除文の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:順序定義文の実行が正常終了しました (システム名=DSDBSYS) qdg02200i:rdbddlexが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(5 stage of 6) executing entry.ldif_RDB_SELECT_SEQ.sql rdbexecsql -s DSDB -u Administrator -i C:\temp\entry.ldif_RDB_SELECT_SEQ.sql ~ここで Symfowareコマンドからパスワード入力を求めるプロンプトが表示される。~ SELECT ADMINISTRATOR.SEQ_ENTRY_ID.CURRVAL FROM RDBII_SYSTEM.RDBII_ASSISTTABLE <<1>> 1:+000000000000000132. Number of records:1 SQLSTATE:00000 SQLMSG:JYP2001I 正常に終了しました. SELECT ADMINISTRATOR.SEQ_REP_ID.CURRVAL FROM RDBII_SYSTEM.RDBII_ASSISTTABLE <<1>> 1:+000000000000001286. Number of records:1 SQLSTATE:00000 SQLMSG:JYP2001I 正常に終了しました. qdg02200i:rdbexecsqlが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(6 stage of 6) executing entry.ldif_RDB_CRT_PROCEDURE.sql rdbddlex -d DSDB -x C:\temp\entry.ldif_RDB_CRT_PROCEDURE.sql qdg12228i:ルーチン定義の実行が正常終了しました (システム名=DSDBSYS) qdg12228i:ルーチン定義の実行が正常終了しました (システム名=DSDBSYS) qdg02200i:rdbddlexが正常終了しました 復帰コード 00 (システム名=DSDBSYS)
> irepanalyze.bat |
-fオプションの「/tmp/entry.ldif」からバイナリデータを作成し移入する例
# /opt/FJSVirep/bin/irepconvert -R rep001 -f /tmp/entry.ldif -o /tmp IREP: 情報: irep10850: irepconvert コマンドが正常に完了しました。(エントリ数=xxx) [rep001]
# cd /tmp
# ls entry.ldif_DS_ENTRY_DSI.dat entry.ldif_DS_FILTER_DSI.dat entry.ldif_DS_SCOPE_DSI.dat entry.ldif_LOADDAT_EXECSQL.sh entry.ldif_RDB_CRT_PROCEDURE.sql entry.ldif_RDB_DROP_PROCEDURE.sql entry.ldif_RDB_SELECT_SEQ.sql
# chmod 500 entry.ldif_LOADDAT_EXECSQL.sh
# ./entry.ldif_LOADDAT_EXECSQL.sh Enter the RDB system name:DSDBSYS <RETURN> Enter the Database connection password of user ID [root]: <RETURN> Information of the entry registration. RDB system name :DSDBSYS Database name :DSDB Database connection user ID :root Start registering?[y,n]:y <RETURN> ...(1 stage of 6) loading entry.ldif_DS_SCOPE_DSI.dat /opt/FSUNrdb2b/bin/rdbsloader -mi -i DSDB.DS_SCOPE_DSI -o /tmp/entry.ldif_DS_SCOPE_DSI.dat rdb: INFO: qdg12055i:11件のデータを格納します (システム名=DSDBSYS) rdb: INFO: qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(2 stage of 6) loading entry.ldif_DS_FILTER_DSI.dat /opt/FSUNrdb2b/bin/rdbsloader -mi -i DSDB.DS_FILTER_DSI -o /tmp/entry.ldif_DS_FILTER_DSI.dat rdb: INFO: qdg12055i:106件のデータを格納します (システム名=DSDBSYS) rdb: INFO: qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(3 stage of 6) loading entry.ldif_DS_ENTRY_DSI.dat /opt/FSUNrdb2b/bin/rdbsloader -mi -i DSDB.DS_ENTRY_DSI -o /tmp/entry.ldif_DS_ENTRY_DSI.dat rdb: INFO: qdg12055i:117件のデータを格納します (システム名=DSDBSYS) rdb: INFO: qdg12074i:rdbsloaderが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(4 stage of 6) executing entry.ldif_RDB_DROP_PROCEDURE.sql /opt/FSUNrdb2b/bin/rdbddlex -d DSDB /tmp/entry.ldif_RDB_DROP_PROCEDURE.sql rdb: INFO: qdg12228i:ルーチン削除の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:順序削除文の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:順序定義文の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:ルーチン削除の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:順序削除文の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:順序定義文の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg02200i:rdbddlexが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(5 stage of 6) executing entry.ldif_RDB_SELECT_SEQ.sql /opt/FSUNrdb2b/bin/rdbexecsql -s DSDB -u root/***** -i /tmp/entry.ldif_RDB_SELECT_SEQ.sql SELECT ROOT.SEQ_ENTRY_ID.CURRVAL FROM RDBII_SYSTEM.RDBII_ASSISTTABLE <<1>> 1:+000000000000000039. Number of records:1 SQLSTATE:00000 SQLMSG:JYP2001I 正常に終了しました. SELECT ROOT.SEQ_REP_ID.CURRVAL FROM RDBII_SYSTEM.RDBII_ASSISTTABLE <<1>> 1:+000000000000000372. Number of records:1 SQLSTATE:00000 SQLMSG:JYP2001I 正常に終了しました. rdb: INFO: qdg02200i:rdbexecsqlが正常終了しました 復帰コード 00 (システム名=DSDBSYS) ...(6 stage of 6) executing entry.ldif_RDB_CRT_PROCEDURE.sql /opt/FSUNrdb2b/bin/rdbddlex -d DSDB -x /tmp/entry.ldif_RDB_CRT_PROCEDURE.sql rdb: INFO: qdg12228i:ルーチン定義の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg12228i:ルーチン定義の実行が正常終了しました (システム名=DSDBSYS) rdb: INFO: qdg02200i:rdbddlexが正常終了しました 復帰コード 00 (システム名=DSDBSYS)
# irepanalyze.sh |
使用例(非対話形式)
バッチファイル、またはシェルスクリプトの中で定義することで、対話形式を非活性にすることができます。対話入力を非活性にするには、定義項目をすべて指定してください。
注意
バッチファイル、またはシェルスクリプトを編集する前に、バッチファイル、またはシェルスクリプトをデータベースの管理者に対してだけ“読み取り”を許可するように設定してください。
定義項目
定義項目すべてを指定してください。なお、下記以外の定義項目を変更する必要はありません。
定義項目名 | 定義値の説明 |
---|
DB_SYSNAME | RDBシステム名を指定してください。 RDBシステム名に使える文字は、半角英数字です。 |
DB_PASS | データベース接続パスワードを指定してください。 データベース接続パスワードに使える文字は、半角英数字です。 |
記述形式
バッチファイル、またはシェルスクリプトの中に指定する、定義項目は以下の形式で記述します。
set 定義項目名=定義値
定義項目名=定義値
記述例
RDBシステム名に「DSDBSYS」、データベース接続パスワードに「password」を、それぞれ指定した時の例です。
rem ----------------------------------------------
set DB_SYSNAME=DSDBSYS
set DB_PASS=password
rem ----------------------------------------------
# ------------------------------------------------
DB_SYSNAME=DSDBSYS
DB_PASS=password
# ------------------------------------------------
実行方法
実行方法は、使用例(対話形式)で記載した手順で実施してください。