スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(Windows(R)用)

[目次][索引][前へ][次へ]

8.3.3 データベース作成ユティリティの入力用ファイルの形式

-Wオプションを指定した場合,作成されたアンロードデータファイルは,データベース作成ユティリティの入力データファイルとして使用できます。

<この項の構成>
(1) DAT形式,及び拡張DAT形式の場合
(2) バイナリ形式の場合
(3) 固定長データ形式の場合

(1) DAT形式,及び拡張DAT形式の場合

DAT形式,及び拡張DAT形式の場合,データは文字データで出力します。DAT形式と拡張DAT形式の相違点については,「(c)DAT形式と拡張DAT形式の相違点」を参照してください。この相違点以外は,DAT形式と拡張DAT形式は同じになります。

規則を次に示します。

  1. 表の1行に対して,ファイルの1行を出力します(行の終わりには改行文字を出力します)。
  2. 列データ間にはセパレータ文字が入ります。各データ型に対する列データの出力形式(DAT形式)については,「5.5.1 DAT形式の場合」を参照してください。
    文字データ,各国文字データ,混在文字データ,及びBINARYデータの出力形式は,引用符(")で囲んだ形となります。
    抽象データ型の出力形式は,コンストラクタパラメタ逆生成関数の指定数文のデータを,セパレータ文字で区切った形となります。ただし,コンストラクタパラメタ逆生成関数の戻り値がBLOB型の場合は,ナル値としてセパレータ文字を連続して出力します。
  3. LOB列のデータは,-jオプションの指定に関係なくナル値として出力します。
  4. 抽象データ型の列のデータは,コンストラクタパラメタ逆生成関数の戻り値がBLOB型の場合はナル値として出力します。
  5. 変換後の行長が512メガバイトを超える場合はエラーとなります。また,アンロードデータファイルにストリーミングテープ装置を割り当てた場合は,行長が32キロバイトを超えるとエラーになります。
  6. option文にspacelvl=3を指定していて,更にsupオプションを指定している場合,NCHAR型の半角空白2バイトを空白変換してから,半角空白2バイト分を一組として出力抑止します。
  7. 列のデータ型が文字データ,各国文字データ,混在文字データ,又はバイナリの場合,列値中に囲み文字(")+セパレータ文字,又はセパレータ文字+囲み文字(")の組み合わせの文字の並びがあるときは,それらを列データの終了位置,開始位置とみなしてデータロードすることがあります。これを防ぐには,-Wオプションでセパレータ文字を変更してアンロードするか,又はバイナリ形式で出力するかしてください。
(a) 繰返し列の場合の形式

繰返し列の場合は,各要素のデータをセパレータ文字で区切って出力します。

ただし,制御情報ファイルのarray文の指定によって行データ形式が異なります。array文にffを指定した場合の行データ出力形式を図8-12に,vvを指定した場合の行データ出力形式を図8-13に示します。

図8-12 array文にffを指定した場合の行データ出力形式

[図データ]

図8-13 array文にvvを指定した場合の行データ出力形式

[図データ]

(b) supオプションを指定した場合の形式

アンロード時にsupオプションを指定すると,表定義の列長に満たない部分の空白を圧縮した形式でアンロードデータファイルに出力します。supオプションを指定した場合の形式と,指定しない場合の形式を次に示します。

(例1) 表定義 CREATE TABLE T1(C1 INTEGER,C2 CHAR(10),…);
   入力したデータ 1,AA,…
supオプションを指定した場合:
 
1,"AA",…
 
[説明]
表定義長に満たない部分(8文字分)の空白を圧縮して出力します。
supオプションを指定しない場合:
 
1,"AA........",…
 
注 「.」は半角空白を示します。
[説明]
表定義長に満たない部分(8文字分)に半角空白(.)を埋めて出力します。

(例2) 表定義 CREATE TABLE T1(C1 INTEGER,C2 MCHAR(10),…);
   入力したデータ 1,..........,…(.は半角空白を示します)
supオプションを指定した場合:
 
1,".",…
 
[説明]
半角空白を1バイト出力します。
supオプションを指定しない場合:
 
1,"..........",…
 
[説明]
表定義長分半角空白を出力します。

(例1) 表定義 CREATE TABLE T1(C1 INTEGER,C2 NCHAR(10),…);
   入力したデータ 1,AA,…
supオプションを指定した場合:
 
1,"AA",…
 
[説明]
表定義長に満たない部分(8文字分)の空白を圧縮して出力します。
supオプションを指定しない場合:
 
1,"AA△△△△△△△△",…
 
注 「△」は2バイトの空白を示します。
[説明]
表定義長に満たない部分(8文字分)に2バイトの空白を出力します。

(例2) 表定義 CREATE TABLE T1(C1 INTEGER,C2 NCHAR(10),…);
   入力したデータ 1,△△△△△△△△△△,…
           (△は2バイトの空白を示します)
supオプションを指定した場合:
 
1,"△",…
 
[説明]
2バイトの空白を一つ出力します。
supオプションを指定しない場合:
 
1,"△△△△△△△△△△",…
 
[説明]
表定義長分に2バイトの空白を出力します。

(例1) 表定義 CREATE TABLE T1(C1 INTEGER,C2 NCHAR(10),…);
   入力したデータ 1,AA....,…(.は半角空白を示します)
supオプションを指定した場合:
 
1,"AA",…
 
[説明]
表定義長に満たない部分(8文字分)の空白を圧縮して出力します。
supオプションを指定しない場合:
 
1,"AA................",…
 
[説明]
表定義長に満たない部分(8文字分)に半角空白を出力します。

(例2) 表定義 CREATE TABLE T1(C1 INTEGER,C2 NCHAR(10),…);
   入力したデータ 1,△△△△△△△△△△,…
           (△は2バイトの空白を示します)
supオプションを指定した場合:
 
1,"..",…
 
注 「.」は半角空白を示します。
[説明]
半角空白を2バイト分出力します。
supオプションを指定しない場合:
 
1,"....................",…
 
注 「.」は半角空白を示します。
[説明]
表定義長分に半角空白を出力します。
(c) DAT形式と拡張DAT形式の相違点

DAT形式と拡張DAT形式の相違点を次に示します。

項目 DAT形式 拡張DAT形式
データ中にNULL文字(\0),又は改行文字(\n)がある場合 該当する列データ値を含む行は出力しません。 該当する列データ値を含む行を出力します(\0及び\nはそのまま出力します)。
データ中に囲み文字(")と同じデータがある場合 該当する列データ値としての囲み文字は,そのまま出力します。 該当する列データ値としての囲み文字を,二重にして出力します。
(例)「"」→「""」

注※
マルチバイト文字も変換対象になるため,APなどでファイルの内容を参照する場合は注意が必要です。なお,pdloadでは,マルチバイト文字に関係なく「""」を「"」に変換するため,データロードはできます。

(2) バイナリ形式の場合

バイナリ形式の場合,データはデータベースの列定義に合わせた内部形式で出力します。このため,このファイルをデータベース作成ユティリティの入力とする場合は,アンロードした表とデータロード先の表の列定義は同じでなければなりません。また,非FIX表をアンロードした場合は,列定義が同じであってもFIX表にはデータロードできません。

出力形式を次に示します。

[図データ]

●CMTヘッダ

CMTに出力する場合は,最初に512バイト分のCMTヘッダを付けて出力します。

●行データ

FIX表と非FIX表では行データの出力形式が異なります。なお,各データ型に対する列データの出力形式(バイナリ形式)については,「5.5.2 バイナリ形式の場合」を参照してください。

・FIX表の場合
列の定義順に,列のデータ値をバウンダリしないで詰めて出力します。FIX表の出力形式を次の図に示します。

図8-14 FIX表の出力形式

[図データ]

・非FIX表の場合
各部を順に,バウンダリしないで詰めて出力します。非FIX表の出力形式を次の図に示します。

図8-15 非FIX表の出力形式

[図データ]
制御部の出力形式を次の図に示します。

図8-16 非FIX表の制御部の出力形式

[図データ]
  • データの長さ部
    データの長さ部の先頭から,データ部の最後までの長さを2進数(4バイト)で出力します。図8-16では,Lになります。
  • データのオフセット部
    データのオフセット部は,列定義順にバウンダリしないで詰めて出力します。対象列が抽象データ型の場合は,コンストラクタ逆生成関数の関数分(unld_func文に指定した数),関数指定順(unld_func文に指定した順)にオフセット値をバウンダリしないで詰めて出力します。
  • オフセット値
    データの長さ部の先頭から,各列(コンストラクタパラメタ逆生成関が生成したデータ値)のデータ値の先頭までの長さを2進数(4バイト)で出力します。データ値がナル値の場合は,0を出力します。
 
データ部は,図8-15に示すように,基本データ部,BINARY属性データ部,BINARY列データ部,BLOB属性データ部,及びBLOB列データ部から成ります。
基本データ部
制御部(データのオフセット値)の後からデータの長さ(図8-16のL)分まで,データの長さ列のデータ値,及びコンストラクタパラメタ逆生成関数が返却したデータ値を出力します。なお,該当列のオフセット値が0(ナル値)の場合は出力しません。また,各列のデータ値及びコンストラクタパラメタ逆生成関数が返却したデータ値の出力順は保障しません(各データ値の先頭位置はオフセット値で参照できます)。基本データ部に出力する,各列及びコンストラクタパラメタ逆生成関数が返却したデータ値を次の表に示します。

表8-3 基本データ部に出力する値

列の属性 列のデータ型 コンストラクタパラメタ逆生成関数が返却するデータ型 基本データ部に出力する値
繰返し列
上記以外 抽象データ型 BINARY型 コンストラクタパラメタ逆生成関数が返却したデータ値の長さ
BLOB型 コンストラクタパラメタ逆生成関数が返却したデータ値の長さ
上記以外 コンストラクタパラメタ逆生成関数が返却したデータ値
BINARY型 列のデータ値の長さ
BLOB型 列のデータ値の長さ
上記以外 列のデータ値
(凡例)−:該当しません。
注※
繰返し列の場合,基本データ部に出力する値は要素数,要素データで構成し,バウンダリしないで詰めて出力します。繰返し列の場合の基本データ部の出力形式を次の図に示します。

図8-17 繰返し列の場合の基本データ部の出力形式

[図データ]
  • 要素数
    繰返し列のデータ中の要素の数を2進数(2バイト)で1〜30,000の範囲で出力します。pdloadは要素数が0の場合はエラーデータとして扱うため,要素数を0にするのではなく,オフセット値を0(ナル値)としてください。
  • 要素データ
    要素値(ナルフラグとデータ値)を要素ごとに,データベース格納順にバウンダリしないで詰めて出力します。なお,要素数が0の場合は出力しません。
  • 要素値
    ナルフラグとして,先頭1バイトに該当する要素がナル値かどうかを示す値を2進数(1バイト)で出力します。ナル値の場合は「0x01」を,ナル値以外の場合は「0x00」を出力します。
    ナルフラグに続けてデータ値をデータ値の長さ分,バウンダリしないで出力します。
BINARY属性データ部及びBLOB属性データ部
抽象データ型の列を含む表の場合,その抽象データ型に対してunld_func文に指定したコンストラクタパラメタ逆生成関数が返却するデータ型がBINARY型又はBLOB型のとき,返却したBINARYデータ値又はBLOBデータ値(長さを含まない)を出力します。unld_func文にコンストラクタパラメタ逆生成関数を指定していないときは,BINARY属性データ部又はBLOB属性データ部は存在しません。
BINARY属性データ部又はBLOB属性データ部は,列定義順及びコンストラクタパラメタ逆生成関数関数の指定順に,バウンダリしないで詰めて,基本データ部に出力した長さ分出力します。コンストラクタパラメタ逆生成関数が返却する値がナル値のときはそのデータ値は出力しません。
次に示す例の場合の,BINARY属性データ部の出力形式を図8-18に示します。
(例)
表定義:
 
CREATE TABLE T1(c1 ADT1,C2 INTEGER,C3 ADT2)
ADT1:抽象データ型(ADT1)
ADT2:抽象データ型(ADT2)
unld_func文の指定:
 
unld_func type=ADT1,func=adt1_func1(ADT1),adt1_func2(ADT1),adt1_func3(ADT1)
unld_func type=ADT2,func=adt2_func1(ADT2),adt2_func2(ADT2),adt2_func3(ADT2)
adt1_func1/adt1_func3:BINARY型のデータを返却するコンストラクタパラメタ逆生成関数
adt1_func2:INTEGER型のデータを返却するコンストラクタパラメタ逆生成関数
adt2_func1/adt2_func3:BINARY型のデータを返却するコンストラクタパラメタ逆生成関数
adt2_func2:INTEGER型のデータを返却するコンストラクタパラメタ逆生成関数

図8-18 BINARY属性データ部の出力形式(例)

[図データ]
BINARY列データ部及びBLOB列データ部
BINARY型又はBLOB型の列が含まれる表の場合,BINARY型又はBLOB型の列のデータ値(長さを含まない)を出力します。BINARY型の列がない表のときはBINARY列データ部は存在しません。また,BLOB型の列がない表のとき,及びコマンドラインに-jオプションを指定していないときはBLOB列データ部は存在しません。
BINARY型又はBLOB型の列のデータ値は,列定義順にバウンダリしないで詰めて,基本データ部に出力した長さ分出力します。なお,該当する列の値がナル値のときはそのデータ値は出力しません。

(3) 固定長データ形式の場合

固定長データ形式の場合,データは固定長の文字データで出力します。

(a) 出力形式

(凡例)
−:該当しません。

注※
fixtext_option文にencloseオペランドを指定した場合,出力長に2バイトを加算してください。
(b) 規則
  1. 1行(改行含む)は最大512メガバイト(536,870,912バイト)まで出力できます。
  2. 抽象データ型列がある表の場合,unld_func文を指定する必要があります。
  3. FLOAT型又はSMALLFLT型のデータを文字形式に変換した場合,データ値が切り上げられることがあります。データ値が切り上げられると,データベース作成ユティリティ(pdload)でデータ変換エラーとなる場合があります。その場合は,pdloadのオプションに-Fを指定することでデータロードができます。