5.1.5 自動採番機能を使用したデータロード
自動採番機能を使用してデータロードすると,表の列に,順序数生成子が生成する順序番号を格納できます。
自動採番機能を使用したデータロードを次の図に示します。
[説明]
-
入力データファイルから,入力バッファにデータを読み込みます(ここでは,順序番号の取得方式としてバッファ単位取得方式を使用していると仮定します)。
-
読み込んだ行数分の順序番号を確保するため,順序数生成子をコールします。
-
順序数生成子では,確保した順序番号を返し,次に割り当てる値を現在値に設定します。
-
pdloadは,入力バッファからデータを読み込みながら,取得した順序番号を含めて行データを組み立てます。
-
組み立てた行データをデータロードします。
自動採番機能を使用してデータロードする場合,入力データファイルは次のどれかの形式でなければなりません。
-
DAT形式
-
拡張DAT形式
-
固定長データ形式
-
バイナリ形式
-
pdrorg出力バイナリ形式(pdload用アンロードファイル)
(1) 順序番号の格納方式
自動採番機能を使用してデータロードする場合,入力データファイル内の,順序番号を格納する列の扱いを選択できます。順序番号の格納方式には次の3種類があります。
- 列データ全置換:
-
順序番号を格納する列に対して,入力データファイル中の該当する列データをすべて順序番号に置き換えます。
- 列データ一部置換:
-
順序番号を格納する列に対して,入力データファイル中の該当する列データのうち,指定した置換条件に一致するデータだけ順序番号に置き換えます。
- 列データ追加:
-
順序番号を格納する列に対応するデータが入力データファイル中にない場合,順序番号を入力データとして追加します。なお,入力データファイルがバイナリ形式の場合,この方式は指定できません。
順序番号の格納方式は,列構成情報ファイル又はナル値・関数情報ファイルで指定します。
(3) 順序番号を格納できるデータ型
順序番号は次のデータ型の列に格納できます。
-
INTEGER
-
SMALLINT
-
DECIMAL
-
FLOAT
-
SMALLFLT
-
CHAR
-
VARCHAR
-
MCHAR
-
MVARCHAR
これらのデータ型と順序数生成子のデータ型が異なる場合,pdloadがデータ変換してデータロードします。変換後のデータが列のデータ型として格納できない場合,データロードはエラーとなります。
(4) エラー時の処理
(a) 論理エラー発生時
入力データで論理エラーが発生した場合,エラーが発生する前に割り当てられた順序番号は欠番となります。
(b) データ変換エラー発生時
「順序番号を格納できるデータ型」に示すデータ変換エラーが発生した場合,pdloadは-eオプションの指定有無に関係なく,エラー終了します。この場合,option文のdataerrオペランドの指定によって,それまでデータロードしたデータをコミットするか,又はロールバックするかを決定します。ロールバック指定の場合は,データロード中に使用した順序番号は欠番となります。
(5) 注意事項
自動採番機能を使用したデータロード実行時の注意事項を次に示します。
-
1表の複数列に順序番号を格納する場合,各列に異なる順序数生成子を指定したときは,それぞれ指定した順序数生成子が生成した順序番号を格納します。また,各列に同じ順序数生成子を指定した場合は,同じ行の各列に同じ値の順序番号を格納します。
-
UOCを利用して,ユティリティが入力デ−タファイルを入力してデータロードする場合,該当する列に対する順序番号を置換又は追加する前のデータをUOCに渡します。pdloadは,UOCが編集したデータを受け取った後,該当する列に対して順序番号の置換又は追加をします。
-
繰返し列に対しては,自動採番機能を使用したデータロードはできません(エラーとなります)。繰返し列に順序番号を格納する場合は,次のどちらかの方法で対処してください。
-
HiRDB SQL ExecuterやUAPなどを使用して,入力データに順序番号を含めてINSERT文を実行する。
-
自動採番機能を使用しないでデータロードし,HiRDB SQL ExecuterやUAPなどを使用して,順序番号を格納する繰返し列に対してUPDATE文を実行する。
-
-
自動採番機能を使用したデータロードでは,順序数生成子に対して排他を掛けます。特に,順序番号の取得方式が全数一括取得方式の場合はデータロード処理が終了するまで排他を掛けるため,ほかのユティリティやUAPが排他待ちとなることがあります。
-
順序番号を割り当てた後で論理エラーが発生した場合,入力データの形式がDAT形式,拡張DAT形式,又は固定長データ形式のときは,エラーデータファイルに入力データの値が出力されます。
入力データの形式がバイナリ形式のときは,エラーデータファイルに順序番号が出力されます。