表の創成やインデックスの創成は、rdbsloaderコマンドで行います。表の創成を行う場合は、表のDSIにインデックスが定義されていると、そのすべてのインデックスのDSIも同時に創成します。
注意
rdbsloaderコマンドによる創成後には、ディスク破壊などの異常時のリカバリに備えて、rdbdmpコマンドによるバックアップが必要です。詳細については、“4.4.8 DSIのバックアップ”を参照してください。
アーカイブログ運用を行っている場合、rdbsloaderコマンド実行中にシステムロググループまたはユーザロググループのアーカイブログファイルが満杯になると、rdbsloaderコマンドはアーカイブログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、アーカイブログファイルをバックアップすることにより処理待ち状態を解除できます。
rdbsloaderコマンド実行前にアーカイブログファイルの使用状況を把握し、必要に応じて強制切替えや、破棄またはバックアップのタイミングを調整してください。アーカイブログファイルの詳細については、“4.4 異常時に備えたデータのバックアップ”を参照してください。
ポイント
rdbsloaderコマンドは、分割格納が定義された表のDSIを処理するとき、入力ファイル内に分割値範囲外のデータが含まれている場合、該当データを処理対象とせずに処理を続行し、正常終了します。分割範囲外のデータをエラーとし、入力ファイルの作成ミスや指定ミスによるデータ抜けを検出するためには、Eオプションを使用します。
詳細は“表の創成(分割値範囲外データエラー指定)”を参照してください。
rdbsloaderコマンドの入力ファイルをテキスト形式で創成する場合について以下に説明します。
参照
rdbsloaderコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
参考
rdbsloaderコマンドは、以下のいずれかの条件を満たす場合、対象DSIの割付け領域のデータ内容が保証されないため、DSI割付け量に依存した処理時間になります。なお、条件に当てはまらない場合は、入力データ量に依存します。
対象DSIの定義直後
対象DSIがアクセス禁止状態
格納構造が、以下のいずれかの場合
RANDOM構造の表
RANDOM構造の表のDSIに付加されたBTREE構造のインデックス
OBJECT構造の表
OBJECT構造の表のDSIに付加されたBTREE構造のインデックス
すべての列にデータを挿入する場合の機能概要と指定例を以下に示します。
$ rdbsloader -mi -i 在庫管理DB.在庫表DSI -f 20 -s /home/rdb1/work
-t -k /home/rdb1/stock1.data
(1)
(1) 入力ファイル名
ある列にのみデータを挿入する場合の機能概要と指定例を以下に示します。
$ rdbsloader -mi -i 在庫管理DB.在庫表DSI -f 20 -s /home/rdb1/work
-t -c 倉庫番号,製品名 -k /home/rdb1/stock2.data
(1)
(1) 列指定
入力ファイルのデータの並びと対象DSIの属する表の列の並びが一致しておらず、それぞれを対応づける場合などに、入力ファイルの先頭から順に入っているデータを、表内のどの列に対応させるかを指定します。本オプションで指定した列名の数が表定義の列の数よりも少ない場合、指定されなかった列について、表定義でNULL値が許されていればNULL値が設定され、DEFAULT句が指定されていればDEFAULT句に指定した値が設定されます。NOT NULLが指定されていればエラーとなります。本オプションを省略すると、表定義と同じ列名が同じ順序で指定されたものとして処理します。ただし、対象DSIがOBJECT構造の場合は、列指定を指定することはできません。
正常なレコードのみを挿入し、属性エラーを検出した誤りのレコードを、指定されたファイルに出力する場合の機能概要と指定例を以下に示します。
$ rdbsloader -mi -i 在庫管理DB.在庫表DSI -f 20 -s /home/rdb1/work
-t -k -r 10,/home/rdb1/err.data /home/rdb1/stock3.data
(1)
(1) エラーデータ指定
複数のDSIに一括してデータを挿入する場合の機能概要と指定例を以下に示します。
$ rdbsloader -mi -v /home/rdb1/list.data -f 20 -s /home/rdb1/work -t (1) -k /home/rdb1/all.data
(1) 複数DSI指定
表のDSIにインデックスが定義されている場合、インデックスを並列創成することにより、DSIの創成を高速に処理することができます。
インデックスの並列創成を伴う表の創成をする場合の指定例を以下に示します。
$ rdbsloader -mi -i 在庫管理DB.在庫表DSI -h -f 20
(1)
-s 製品名IXDSI1,/home/rdb1/work2
-s 製品名IXDSI2,/home/rdb1/work3
-t /home/rdb1/stock4.data
(1) インデックス並列創成指定
入力ファイルに含まれる分割値範囲外のデータを、エラーとする場合の指定例を以下に示します。
$ rdbsloader -mi -i 在庫管理DB.在庫表DSI -E OUTER_SPLIT_VALUE -f 20
(1)
-t /home/rdb1/stock5.data
(1) 分割値範囲外データエラー指定
分割格納が定義された表のDSIを処理するとき、入力ファイルにDSIの分割値の範囲外であるデータが存在した場合、異常データとして扱います。
本指定を省略すると、入力ファイル中に分割値範囲外データが含まれている場合、該当データを処理の対象外として処理を続行し、正常終了します。
本機能はコマンド実行時の環境変数としての指定もできます。
シェルスクリプトに記載された複数のrdbsloaderコマンドにまとめて本機能を有効としたい場合などに使用してください。
環境変数名 | 設定値 |
---|---|
RDB_CHECK_LOADDATA | OUTER_SPLIT_VALUE |
以下に環境変数の指定例を示します。
bashの場合
$ RDB_CHECK_LOADDATA=OUTER_SPLIT_VALUE; export RDB_CHECK_LOADDATA
TCシェルの場合
% setenv RDB_CHECK_LOADDATA OUTER_SPLIT_VALUE