5.5.2 バイナリ形式の場合
バイナリ形式の場合,入力データはデータベースへ格納される形式で記述します。記述方法を次に示します。
(1) 記述形式
(a) 列データの記述形式
各データ型に対する列データ・パラメタの記述形式(バイナリ形式)を次の表に示します。なお,この表ではビッグエンディアンで表記しています。Linuxの場合はリトルエンディアンになります。
- 注※1
-
文字コード変換なし又は変換後もデータ長が変化しない文字コード変換をする場合
- 注※2
-
変換後にデータ長が変化する文字コード変換をする場合
- 注※3
-
詳細は,「-kオプションにv,又はdを指定した場合のLOBデータ,及びLOBパラメタの記述方法」を参照してください。
(b) 入力パラメタの記述形式
入力パラメタの記述方法を次に示します。
-
抽象データ型に格納する値を生成するコンストラクタ関数の入力パラメタを,関数のパラメタ型と同じ構造で記述します。
-
入力パラメタの順序とコンストラクタ関数の引数の順序は同じにしてください。
-
格納先の列が抽象データ型の場合,コンストラクタ関数は抽象データ型と同じ名称の関数を使用します。引数が異なる同一名称のコンストラクタ関数が複数ある場合や,抽象データ型の名称とは異なるコンストラクタ関数を使用する場合は,使用する関数名をナル値・関数情報ファイルに指定してください。
-
入力パラメタが複数ある場合,パラメタ値とパラメタ値の間は,空白を入れないで詰めます。
(2) 規則
-
磁気テープ装置の場合に,可変長ブロックモードで入力データを作成するときは,ブロック長を32キロバイト以下にしてください。
-
入力データの列順序と表定義の列順序は同じにしてください。
-
列データと列データの間は,空白を入れないで詰めます。可変長文字列の場合で定義長に実際のデータが満たない場合は,実長でデータを記述し,次のデータを詰めます。
-
EasyMTを使用してLOB列がある表を作成する場合,LOB列構成基表の入力データファイルに記述するLOB入力ファイルの名称は,EasyMT内のファイル名称だけ指定してください。
-
入力データに次のデータがある場合,同期点指定のデータロードはお勧めできません。次のデータがあると,不正が検知されても,同期点までのデータが格納されてしまいます。
-
繰返し列
-
可変長データ(VARCHAR,NVARCHAR,MVARCHAR,BINARY,及びBLOB)
-
抽象データ型の引数が可変長データ
-
-
バイナリ形式は,入力データを直接記述するフォーマットのため,デフォルト値を格納できません。デフォルト値を格納する場合は,入力データファイル作成時に直接デフォルト値を記述してください。
-
入力データファイルに予備列のデータを記述しないでください。入力データファイルに予備列のデータが記述された場合,pdloadは,次のどちらかの動作をします。なお,pdrorg出力バイナリ形式の入力データに予備列のデータが記述された場合も同様です。
-
エラーが発生し,論理エラー番号の2,4,5,7,8又は9を出力します。
論理エラー番号については,「エラー情報ファイルの内容」を参照してください。
-
リターンコード0で正常終了します。
ただし,KFPL00703-Iメッセージで示した格納行数が,入力したデータ行数より多くなります。
-
(3) 記述例
バイナリ形式のデータ記述例を次の図に示します。
- 注
-
-
入力データの上段はデータを,下段は格納される値を示します。
-
それぞれのデータ型は,NCHAR(5),INTEGER,SMALLFLT,VARCHARの順です。
-
各国文字データはシフトJISコードです。
-
(4) -kオプションにv,又はdを指定した場合のLOBデータ,及びLOBパラメタの記述方法
(a) -k vの場合
-kオプションにvを指定した場合,LOBデータの入力ファイル名とLOBパラメタのデータは,入力データファイルに直接記述します。
この方法は,-kオプションにfを指定した場合に比べて,LOB入力ファイルの入出力時間が削減できます。
-
規則
-
LOBデータ及びLOBパラメタは,行データ中の該当列に4バイトの長さ部を持ち,行データの直後にデータ部を持つ形式で指定します。指定順序は行データの列順です。
-
LOBデータ又はLOBパラメタがナル値の場合は,長さ部に−1を指定します。ナル値・関数情報ファイル及び関数情報ファイルによるナル比較値は無視されます。データ部は指定しません。
-
LOBデータ又はLOBパラメタが0バイトの場合は,長さ部に0を指定します。データ部は指定しません。
-
記述例
-
BLOBを入力とする抽象データ型の列を一つ持つ表の場合
表定義:CREATE TABLE T1(C1 INTEGER,C2 SGMLTEXT,C3 DEC(7,0))
-
BLOBを入力とする抽象データ型の列を二つ持つ表の場合
表定義:CREATE TABLE T2(C1 SGMLTEXT,C2 INTEGER,C3 SGMLTEXT)
-
LOB列とBLOBを入力とする抽象データ型の列を持つ表の場合
表定義:CREATE TABLE T3(C1 INTEGER,C2 BLOB(100),C3 SGMLTEXT)
(b) -k dの場合
-k オプションにdを指定した場合,入力データファイルには,LOBデータ格納ファイル名称でなく,データそのものを記述します。
-
規則
-
LOBデータ,LOBパラメタデータは行データ中の該当列に4バイトの長さ部を保持し,行データの直後にデータ部を持つ形式で指定してください。
-
入力データファイルの指定順序は次に示す規則に従ってください。
[行データ] [LOBパラメタデータ] [LOBデータ] 1 2 3
[説明]
1. 長さ部は行データ中に列定義順で指定します。
2. LOBパラメタデータは,行データの直後に列定義順で指定します。
3. LOBデータは「2.」に続いて列定義順に指定します。
-
LOBデータ,LOBパラメタデータがナル値の場合は,4バイトの長さ部に−1を指定してください。ナル値・関数情報ファイルによるナル比較値は無視します。なお,この場合データ部はありません。
-
LOBデータ,LOBパラメタデータが0バイトの場合は,長さ部に0を指定してください。なお,この場合データ部はありません。
-
記述例
-
LOB列を一つ持つ表の場合
表定義:CREATE TABLE T1(C1 BLOB(100),C2 INTEGER);
-
LOB列を二つ持つ表の場合
表定義:CREATE TABLE T2(C1 BLOB(100),C2 INTEGER,C3 BLOB(100));
-
LOB列を二つとLOBを入力とする抽象データ型の列を持つ表の場合
表定義:CREATE TABLE T3(C1 BLOB(100),C2 INTEGER,C3 SGMLTEXT,C4 BLOB(100));