固定長形式の定義
固定長形式のファイルを使用する場合は、形式の定義が必要です。 このトピックでは、一般的なデータ型のための一般的な固定長形式定義の例を紹介します。
エンド・オブ・レコード
固定形式のエンド・オブ・レコード文字が改行文字である場合は、何も行う必要はありません。 改行文字が、デフォルトのエンド・オブ・レコード区切り文字です。 レコード分離文字がない場合は、以下の例のように単一引用符を並べて使用してください。
RecordDelim ''エンド・オブ・レコード区切り文字は、最後のレコードにも必要です。RecordDelim オプションには、最大 8 バイトのリテラル・シーケンスを指定します。一般的なエスケープ表記の変換は行われず、char(8) のような関数もサポートされません。
レコード長
レコード長はオプションですが、使用すれば、形式定義の長さが正しいかどうかについてのフィードバックを得ることできます。 この長さにエンド・オブ・レコード区切り文字は含まれません。 以下に例を示します。
Recordlength 72フィールドのスキップ
以下の節を指定すると、
4 バイトがスキップされます。
“filler char(4) bytes 4” ただし、
以下の例のように、フィールドをスキップすることを示す方式をお勧めします。
“filler fld_name char(4) bytes 4”
時間値
固定長形式ファイルでは、多くの場合、時間値
の区切り文字を省略します。 以下の表に、区切り文字無しの日付、時刻、およびタイムスタンプをロードする場合に使用する節を示します。
| データ・タイプ | 値 | 形式節 |
|---|---|---|
| 日付 | 20101231 | date1 date YMD'' bytes 8 |
| 時刻 | 231559 | time1 time(6) 24hour '' bytes 6 |
| タイムスタンプ | 0101231231559 | stamp1 timestamp(6) 24hour '' bytes 14 |
| タイムスタンプ | 20101231231559000001 | char(24) としてロードした後 insert-select 文を使用
|
| 日付 | 2010-12-31 | date2 date YMD'-' bytes 10 |
| 時刻 | 23.15.59 | time2 time(6) 24hour '.' bytes 8 |
| タイムスタンプ | 2010-12-31 23:15:59 | tms2 timestamp(6) YMD '-' 24hour ':' bytes 19 |
| タイムスタンプ | 2010-12-31 23:15:59.0001 | tms3 timestamp(6)
YMD '-' 24hour ':' bytes 26 |
| timetz | 12:30:45+03:00 | Tz1
TIMETZ(6) 24HOUR ':' bytes 14 |
| timetz | 123045+-0300 | (char(11) としてロードした後 insert-select 文を使用
|
数値
以下の表に、
数値を示します。
| データ・タイプ | 値 | 形式節 |
|---|---|---|
| 整数 | 32767 | int1 int2
bytes 5 |
| int8 | 9123456789123456 | int2 int8 bytes 16 |
| 数値 | 2315.59 | num1 numeric(6,2) bytes 7 |
| 数値 | 231559 | char(6)としてロードし、insert-selectステートメント
(col/100)::numeric(6,2)を使用する。 |
| フローティング | 1.2345678 | flt1
floating bytes 9 |
| フローティング | 12345678 | char(8)としてロードし、insert-selectステートメント(substring(col1,1,1)||'.'||substring(col1,2,7))::floatを使用する。 |
| double | 1.2345678 | flt1 double bytes 9 |
| double | 12345678 | char(8)としてロードし、insert-selectステートメント
(substring(col1,1,1)||'.'||substring(col1,2,7))::doubleを使用する。 |
論理値
以下の表に、論理値を示します。
| データ・タイプ | 値 | 形式節 |
|---|---|---|
| ブール値 | Y または y、N または n | BOOL Y_N BYTES 1 |
| ブール値 | 1, 0 | BOOL 1_0 BYTES 1 |
| ブール値 | T または t、F または f | BOOL T_F BYTES 1 |
NULL 値
固定長形式ファイルでは、一般的に、「マジック」値を使用して NULL を表します。 nullif 節を指定に追加すると、その列について NULL かどうかを検査できるようになります。 nullif 節は以下の要素で構成されます。
- キーワード nullif
- 列参照
- 判別式
例えば、field1 が日付で、値が '99991231' の場合に NULL と見なされる場合、以下のような特性を持つファイル指定になります。
- nullif 指定は以下のようになります。
“nullif &=’99991231’” - 全体的な指定は以下のようになります。
“fld1 date YMD'' bytes 8 nullif &=’99991231’” - すべての形式指定で nullif 節はサポートされます。
「ストリングが正確に一致している」かどうかを評価する &= の他にも、nullif 節は、サブストリングの突き合わせが可能な &&= をサポートしています。 これは、スペースが埋め込まれたフィールドのどこかにストリングが出現している場合などに
便利です。 例えば nullif &&=’N’は、“ N “、“N “、“ N”というさまざまな表記と一致します。
以下の表に、NULL 値を示します。
| データ・タイプ | NULL 値 | 形式節 |
|---|---|---|
| ブール値 | ' ' (1 スペース) | BOOL Y_N
BYTES 1 NULLIF &=' '(1 space) |
| 日付 | 000000 | DATE YMD '' BYTES 6 NULLIF &='000000' |
| int | ' ' (6 スペース) | INT BYTES 6 NULLIF &=' '
(6 spaces) |