5.5.1 DAT形式の場合
DAT形式の場合,入力データ,及びコンストラクタ関数への入力パラメタは文字データで記述します。
(1) 記述形式
列データと列データの間をセパレータ文字で区切って指定します。
各データ型に対する列データ,及びコンストラクタ関数のパラメタの記述形式(DAT形式)を次の表に示します。
- 注
-
各データ型でのナル値の扱いは次のようになります。
-
固定長の文字データ型,各国文字データ型,混在文字データ型,バイナリデータ型,及び長大データ型の場合,次の記述をナル値又は既定値として扱います。
…,,… …,"",…
-
-zオプション指定ありの可変長の文字データ型,各国文字データ型,混在文字データ型,及びバイナリデータ型の場合,次の記述をナル値又は既定値として扱います。
…,,…
なお,…,"",…は長さ0のデータとして扱います。
-
そのほかのデータ型の場合,次の記述をナル値又は既定値として扱います。
…,,… …,"",… …,*,…
extdat文でencloseオペランドを指定した場合,引用符(")はencloseオペランドに指定した囲み文字となります。
-
- 注※1
-
option文のnull_stringオペランドの指定値によって,格納される値が決まります。
- 注※2
-
TIMESTAMP型の小数秒部のけた数を指定した場合の格納方法を次に示します。
定義けた数
入力データの小数秒部のけた数
0
1
2
3
4
5
6
7以上
0
そのまま格納します。※1
定義けた数以降を切り捨てます。
エラー(KFPL31002-E)
2
定義けた数まで0を埋めます。※2
そのまま格納します。※1
定義けた数以降を切り捨てます。
4
定義けた数まで0を埋めます。※2
そのまま格納します。※1
定義けた数以降を切り捨てます。
6
定義けた数まで0を埋めます。※2
そのまま格納します。※1
- 注※1
-
入力データをTIMESTAMP型に変換して,そのまま格納します。
- 注※2
-
実データはバイト単位のため,定義けた数が奇数の場合,定義けた+1の箇所まで0を埋めます。
(2) 規則
-
ファイルの1行に対して,表の1行のデータを記述します(行の終わりには改行文字が必要です)。
-
コンストラクタ関数に渡す入力パラメタを記述する場合,パラメタをセパレータ文字で区切ります。
-
データ中のナル文字(0x00),及び改行記号(0x0a),及び行の終端の復帰改行(0x0d0a)は,データとして扱われません。これらをデータとして扱いたい場合は,extdat文を指定して囲み文字で入力データを囲んでください。
-
1行は最大32キロバイトです。ただし,source文にmaxreclenオペランドを指定した場合は,32キロバイト以上でもデータロードできます。
-
囲み文字で列の入力値が始まると,囲み文字とセパレータ文字が連続した位置を列の終わりと扱います。そのため,囲み文字とセパレータ文字が連続した値を列の入力値とする場合は,-sオプションでセパレータ文字を変更してください。
-
セパレータ文字の直前,直後の文字データの前後を囲み文字(")で囲んだ場合,その囲み文字は入力対象にはなりません。また,囲み文字で囲まれた文字列内のセパレータ文字は,データとして扱われます。文字データの入力と囲み文字の扱いを次の表に示します。
表5‒24 文字データの入力と囲み文字の扱い 入力データファイル内の文字データ
表へ格納されるデータ
DAT形式
拡張DAT形式
〜,ABCD,〜
ABCD
ABCD
〜,AB"CD,〜
AB"CD
入力データエラー
〜,AB""CD,〜
AB""CD
AB"CD
〜,"ABCD",〜
ABCD
ABCD
〜,"AB"CD",〜
AB"CD
入力データエラー
〜,"AB""CD",〜
AB""CD
AB"CD
〜,""ABCD"",〜
"ABCD"
入力データエラー
〜,"""ABCD""",〜
""ABCD""
"ABCD"
〜,,〜
ナル値又は既定値※
ナル値又は既定値※
〜,"",〜
ナル値又は既定値※
ナル値又は既定値※
〜,"""",〜
""
"
〜,"AB,CD",〜
AB,CD
AB,CD
〜,AB\0CD,〜
入力データエラー
入力データエラー
〜,AB\nCD,〜
入力データエラー
入力データエラー
〜,"AB\0CD",〜
入力データエラー
AB\0CD
〜,"AB\nCD",〜
入力データエラー
AB\nCD
- (凡例)
-
「,」:セパレータ文字
「"」:囲み文字
「\0」:ナル文字(0x00)
「\n」:改行コード
- 注※
-
option文のnull_stringオペランドの指定値によって,格納される値が決まります。
-
数値型データに変換する文字データの記述形式を次の表に示します。なお,入力データで数値データ型に文字データを指定する場合の制限については,マニュアル「HiRDB Version 9 SQLリファレンス」の数定数の使用上の制限を参照してください。
表5‒25 数値型データに変換する文字データの記述形式 文字型データで表す数値
表記法
指定形式
指定例(指定→格納値)
整数
- △〔{+|−}〕自然数△
-
自然数は,0〜9の数字の並びを示します。
+10△ → 10
−009 → −9
△△△0△ → 0
10進数
- △〔整数〕.〔小数〕△
-
小数は,符号なし整数を示します。整数又は小数のどちらかは必ず指定してください。
△.05△ → 0.05
−0.8△ → −0.8
1.0△△ → 1.0
+1.△ → 1.0
浮動小数点数
- △仮数e〔指数〕△
-
仮数は,整数又は10進数を示します。eは,Eと指定してもよいです。指数は,1又は2けたの整数を示します。
.3e → 0.3×10
2.4e−02 → 2.4×10−2
67e−5△ → 67×10−5
-
入力データのデータ長と表のデータ長が異なるときの格納データの扱いを次の表に示します。
表5‒26 入力データのデータ長と表のデータ長が異なるときの格納データの扱い 表のデータ長(m)
入力データのデータ長(n)
固定長文字データ
可変長文字データ,又はバイナリデータ
m=nの場合
入力データはそのまま格納されます。
m<nの場合
option文のlengoverオペランドを指定していない場合,入力データの(m+1)以降のデータは切り捨てて格納されます。※
option文のlengoverオペランドを指定している場合,入力データエラーとして扱うため,データは格納されません。
m>nの場合
入力データの(n+1)以降に空白が埋められた形式で格納されます。
入力データはそのまま格納されます。
- 注※
-
option文にcutdtmsg=onを指定すると,データの切り捨てが発生した場合にエラー情報ファイルに警告メッセージを出力します。
-
入力データのデータ部分にセパレータ文字(セパレータ文字と同じコードも含む)がある場合,そのデータ全体を囲み文字(")で囲まないとそのデータはセパレータ文字として扱われます。
-
extdat文にenclose="を指定した場合に,格納されるデータ及びナル値の指定方法を次の表に示します。
表5‒27 extdat文にenclose="を指定した場合に,格納されるデータ及びナル値の指定方法 データ型
入力データ
表へ格納されるデータ
ナル値又は既定値の指定方法※
数データ
INTEGER
"1234"
1234
*,"","*",又は記述しません。
SMALLINT
"1234"
1234
DECIMAL(6,1)
"000001"
00001.0
FLOAT
"2.225075e-308"
+2.225075000000000E-308
SMALLFLT
"1.175495e-38"
+1.175495051471520E-38
文字データ
CHAR
"ABCDE"
ABCDE
"",又は記述しません。
VARCHAR
"ABCDE"
ABCDE
各国文字データ
NCHAR
"あいうえお"
あいうえお
NVARCHAR
"あいうえお"
あいうえお
混在文字データ
MCHAR
"ABCDE"
ABCDE
MVARCHAR
"ABCDE"
ABCDE
日付データ
DATE
"2000-05-31"
2000-05-31
*,"","*",又は記述しません。
日間隔データ
INTERVAL YEAR TO DAY
"+00000000."
00000000
時刻データ
TIME
"09:00:00"
09:00:00
時間隔データ
INTERVAL HOUR TO SECOND
"+000000."
000000
時刻印データ
TIMESTAMP(6)
"2002-08-08△20:25:43.39"
2002-08-08 20:25:43.390000
バイナリデータ
BINARY
"ABCDE"
ABCDE
"",又は記述しません。
XML型のBINARY属性パラメタ
"XML文書ファイルパス名"
XML文書ファイルの内容
長大データ
BLOB
"LOB入力ファイル名"
LOB入力ファイルの内容
- (凡例)
-
△:半角の空白
- 注※
-
option文のnull_stringオペランドの指定値によって,格納される値が決まります。
-
extdat文にenclose="を指定した場合の空白削除の例を次の表に示します。
表5‒28 extdat文にenclose="を指定した場合の空白削除の例 データ型
入力データ
表へ格納されるデータ
数データ
INTEGER
"△1234△"
1234
SMALLINT
"△"
ナル値
DECIMAL(6,1)
"△000001"
00001.0
FLOAT
"△2.225075e-308"
+2.225075000000000E-308
SMALLFLT
"1.175495e-38△"
+1.175495051471520E-38
日付データ
DATE
"△2000-05-31"
2000-05-31
日間隔データ
INTERVAL YEAR TO DAY
"+△00000000."
00000000
時刻データ
TIME
"△09:00:00"
09:00:00
時間隔データ
INTERVAL HOUR TO SECOND
"△+△000000."
000000
時刻印データ
TIMESTAMP
"△2002-08-08△△20:25:43.39△"
2002-08-08 20:25:43.39
-
拡張DAT形式の文字集合としてUTF-16又はIVS対応UTF-16を使用する場合,2バイト単位に入力データを解析します。そのため,拡張DAT形式の入力データファイルに,奇数バイト長のBINARY列データ,及び奇数バイト長のBINARY属性パラメタデータを記述する場合は,次のどちらかの対処をしてください。
-
文字コードをUTF-8にする。
-
入力データファイルをバイナリ形式又は固定長データ形式にする。
上記の対処をしなかった場合,pdloadはセパレータ文字や改行文字を正しく認識できないため,次の現象が発生します。
-
KFPL31005-Eエラー
-
改行を認識できないため,後続の行を同一列のデータと誤認します。そのため,BINARY列又はBINARY属性パラメタを持つ抽象データ型列へ不当に長いデータが格納されます。
-
-
入力データファイルに予備列のデータを記述しないでください。入力データファイルに予備列のデータが記述された場合,論理エラー番号の5を出力します。論理エラー番号については,「エラー情報ファイルの内容」を参照してください。
(3) 記述例
DAT形式のデータ記述例を次の図に示します。