創成済みの表に対しデータの追加、置換、更新および削除を行う場合、目的に応じたアプリケーションを作成しなくても、rdbsuloaderコマンドにより、外部ファイルからDSIに対するデータ追加、置換、更新および削除をすることができます。rdbsuloaderコマンドには、以下の機能があります。
行の追加および置換
列の更新
行の削除
操作を外部ファイルの各レコードで指定
rdbsuloaderコマンドに指定できるDSIは、SEQUENTIAL構造のみです。
外部ファイルの形式の詳細は、“4.1.1 外部ファイルの形式”を参照してください。
注意
rdbsuloaderコマンドを実行する前に、rdbunlコマンドによりDSIの退避データを取得してください。コマンドが異常終了した場合の退避データとなります。詳細は“rdbsuloaderコマンドの異常時の対処”を参照してください。
アーカイブログ運用を行っている場合、rdbsuloaderコマンド実行中にシステムロググループまたはユーザロググループのアーカイブログファイルが満杯になると、rdbsuloaderコマンドはアーカイブログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、アーカイブログファイルをバックアップすることにより処理待ち状態を解除できます。
rdbsuloaderコマンド実行前にアーカイブログファイルの使用状況を把握し、必要に応じて強制切替えや、破棄またはバックアップのタイミングを調整してください。アーカイブログファイルの詳細については、“4.4 異常時に備えたデータのバックアップ”を参照してください。
ポイント
rdbsuloaderコマンドは、分割格納が定義された表のDSIを処理するとき、入力ファイル内に分割値範囲外のデータが含まれている場合、該当データを処理対象とせずに処理を続行し、正常終了します。分割範囲外のデータをエラーとし、入力ファイルの作成ミスや指定ミスによるデータ抜けを検出するためには、Eオプションを使用します。
参照
各コマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
外部ファイルのデータを表に追加します。その際、外部ファイルのデータとmarオプションで指定したキーの値が一致する行がある場合、その行を外部ファイルのデータと置き換えます。
$ rdbsuloader -mar,製品番号 -i 在庫管理DB.在庫表DSI
(1)
-s /home/rdb1/work
/home/rdb1/suloader1.data
(1) 追加および置換指定
備考.外部ファイルのデータに対して、キーの値が一致する行が複数ある場合には、一致するすべての行が置換されます。外部ファイル中にキーの値が同じデータが複数ある場合には、外部ファイル中でのデータの出現順序にしたがって追加または置換されます。
外部ファイルのデータとmuオプションで指定したキーの値が一致する行について、cオプションで指定された列を外部ファイルで指定された値に更新します。
$ rdbsuloader -mu,製品番号 -c 製品番号,棚番号
(1)
-i 在庫管理DB.在庫表DSI
-s /home/rdb1/work
/home/rdb1/suloader2.data
(1) 更新指定
備考.外部ファイルのデータに対して、キーの値が一致する行が複数ある場合には、一致するすべての行が更新されます。外部ファイル中にキーの値が同じデータが複数ある場合には、外部ファイル中でのデータの出現順序にしたがって更新されます。
外部ファイルのデータとmdオプションで指定したキーの値が一致する行を削除します。
$ rdbsuloader -md,製品番号 -i 在庫管理DB.在庫表DSI
(1)
-c 製品番号
-s /home/rdb1/work
/home/rdb1/suloader3.data
(1) 削除指定
備考.外部ファイルのデータに対して、キーの値が一致する行が複数ある場合には、一致するすべての行が削除されます。
外部ファイルの各レコードの先頭に、操作種別を設定することにより、1つのコマンド操作で、追加、置換、更新および削除の操作を混在して実行することができます。
外部ファイルの形式は、“4.1.1 外部ファイルの形式”に記載してあるレコード形式の先頭に、操作を識別するコードを付加した形式です。
バイナリ形式およびテキスト形式のデータ形式を以下に示します。
操作種別は、該当レコードに対し、置換、更新または削除のうち、どの操作を行うかを表します。操作種別は2バイトの符号付2進数の領域です。
操作種別に設定する値と意味を以下に示します。
設定する値 | 意味 | 備考 |
---|---|---|
1 | 追加するレコードを表します | ――― |
2 | 更新するレコードを表します | muオプションに対応します |
3 | 削除するレコードを表します | mdオプションに対応します |
4 | 追加または置換するレコードを表します | marオプションに対応します |
備考. 操作種別に上記以外の値を設定するとエラーになります。
操作種別は、該当レコードに対し、置換、更新または削除のうち、どの操作を行うかを表します。操作種別は1文字の文字で設定します。
操作種別に設定する文字と意味を以下に示します。
設定する文字 | 意味 | 備考 |
---|---|---|
a | 追加するレコードを表します | ――― |
u | 更新するレコードを表します | muオプションに対応します |
d | 削除するレコードを表します | mdオプションに対応します |
r | 追加または置換するレコードを表します | marオプションに対応します |
備考.操作種別に上記以外の値を設定するとエラーになります。
操作を外部ファイルの各レコードで指定する例を以下に示します。
$ rdbsuloader -mc,製品番号 -i 在庫管理DB.在庫表DSI
(1)
-s /home/rdb1/work
/home/rdb1/suloader4.data
(1) 入力ファイルの各レコード指定
備考.外部ファイルのデータに対して、キーの値が一致する行が複数ある場合には、一致するすべての行が操作の対象になります。外部ファイル中にキーの値が同じデータが複数ある場合には、外部ファイル中でのデータの出現順序に従って操作されます。
rdbsuloaderコマンドの実行が異常終了した場合は、指定された表のDSIと、関連するインデックスのDSIを、アクセス禁止にします。
この場合は、コマンド投入前にrdbunlコマンドによって取得した退避データを使用し、rdbsloaderコマンドによりDSIをリカバリしてください。
その後、出力されたメッセージにより異常原因を取り除き、rdbsuloaderコマンドを再実行してください。