Hitachi

Hitachi Advanced Data Binder コマンドリファレンス


17.2.3 列構成情報オプションの形式

列構成情報ファイルに指定する,列構成情報オプションについて説明します。

列構成情報オプションを指定する場合(列構成情報ファイルが必要な場合)は,adbimportコマンドの-rオプションに列構成情報ファイル名を指定します。-rオプションの詳細については,「-r」を参照してください。

〈この項の構成〉

(1) 指定形式

入力データファイルのファイル形式がCSV形式の場合
{{adbcolumninfo
    -n 列名
    〔-r {フィールドデータ番号|empty_string}〕
    〔-b {hex|bin}〕
}}
入力データファイルのファイル形式が固定長形式の場合
set adb_import_input_record_size = 入力レコード長
 
{{adbcolumninfo
    -n 列名
    -p 先頭位置,長さ
    〔-c 空文字列とするための比較値〕
    〔-b {hex|bin}〕
}}

上記の指定規則は,サーバ定義と同じです。サーバ定義の指定規則については,マニュアルHADB システム構築・運用ガイドサーバ定義の文法規則を参照してください。

(2) 列構成情報オプションと入力データファイルのファイル形式の関係

列構成情報ファイルに指定する列構成情報オプションは,入力データファイルのファイル形式によって異なります。列構成情報オプションと入力データファイルのファイル形式の関係を次の表に示します。

各オプションおよびオペランドの詳細については,「(3) 指定形式の説明」を参照してください。

表17‒6 列構成情報オプションと入力データファイルのファイル形式の関係

項番

オプション名またはオペランド名

入力データファイルのファイル形式

CSV形式

固定長形式

1

adb_import_input_record_sizeオペランド

×

2

adbcolumninfoオペランド

3

adbcolumninfoオペランドを指定する場合

-nオプション

4

-pオプション

×

5

-cオプション

×

6

-rオプション

×

7

-bオプション

(凡例)

◎:オプションまたはオペランドを必ず指定します。

○:オプションまたはオペランドを指定できます。

×:オプションまたはオペランドは指定できません。

(3) 指定形式の説明

(a) set形式

adb_import_input_record_size = 入力レコード長

〜〈整数〉((1〜536,870,912))(単位:バイト)

入力データファイルのファイル形式がCSV形式の場合,このオプションは指定できません。

入力データファイルのファイル形式が固定長形式の場合に,入力データファイルのレコード長(1行のデータ長)を指定します。

レコードに改行コードが含まれる場合は,改行コードのバイト数も含めた値を指定してください。

(b) コマンド形式

adbcolumninfo

このオペランドには,処理対象表に定義してある列単位で入力データの扱い方を指定します。

入力データファイルのファイル形式がCSV形式の場合,このオペランドの指定は省略できます。

入力データファイルのファイル形式が固定長形式の場合は,このオペランドを1個以上,指定してください。

このオペランドの指定数は,処理対象表に定義してある列数以下にしてください。

ただし,処理対象表に定義してある列をすべてこのオペランドで指定する必要はありません。このオペランドで指定しない列には,次に示すデータが入力データとして仮定されます。

  • 入力データファイルのファイル形式がCSV形式の場合

    列の定義順と同じフィールドデータ番号のデータが仮定されます。

    フィールドデータ番号とは,1入力レコード中のフィールドデータの並び順に割り振られる番号のことです。入力レコードの先頭のフィールドデータの番号を1として,順番にカウントします。フィールドデータが空文字列の場合も,1つとしてカウントします。

  • 入力データファイルのファイル形式が固定長形式の場合

    空文字列が仮定されます。

-n 列名

〜〈文字列〉((1〜100バイト))

処理対象表に定義している列名を指定します。

注意事項を次に示します。

  • 列名に空白が含まれる場合は,"(二重引用符)で囲んでください。

    (例)"C1"

    (凡例)△:空白

  • 列名に英小文字が含まれる場合,\"(バックスラッシュと二重引用符)で列名を囲んでください。\"で囲まないと,列名の文字列はすべて英大文字と見なされます。

    (例)\"c1\"

    また,列名に英小文字および空白が含まれる場合は,\"(バックスラッシュと二重引用符)で列名を囲み,さらに"(二重引用符)で囲んでください。

    (例)"\"c1\""

    (凡例)△:空白

-p 先頭位置,長さ

入力データファイルのファイル形式がCSV形式の場合,このオプションは指定できません。

入力データファイルのファイル形式が固定長形式の場合は,このオプションを必ず指定してください。

  • 先頭位置

    〜〈整数〉((1〜536,870,912))(単位:バイト)

    -nオプションに指定した列に格納するデータの開始位置を指定します。入力レコード中の先頭を1として,入力レコードの先頭からの位置を指定します。

  • 長さ

    〜〈整数〉((1〜536,870,912))(単位:バイト)

    -nオプションに指定した列に格納するデータについて,入力レコードでの長さを指定します。

    -pオプションの長さには,次の値は指定できません。

    -nオプションに指定した列名の列が文字形式で表現できる最大文字数より大きい値

    -nオプションに指定した列名の列に定義されたデータがバイナリ型の場合,奇数の値

    -bオプションにbinを指定している場合,7以下の値

重要
  • このオプションで指定した範囲が,ほかのadbcolumninfoオペランドに指定した-pオプションの指定値の範囲と重なっていても,エラーになりません。

  • 入力データが囲み文字で囲まれている場合,囲み文字もデータとして格納されます。囲み文字を格納データとして扱いたくないときは,囲み文字を除いた範囲となるように,このオプションを指定してください。

-c 空文字列とするための比較値

〜〈文字列〉((1〜255バイト))

入力データファイルのファイル形式がCSV形式の場合,このオプションは指定できません。

入力データファイルのファイル形式が固定長形式の場合に,空文字列として扱うデータを指定します。入力データがこのオプションの指定値と一致する場合は,空文字列として扱われます。

このオプションの指定値の文字数は,-pオプションで指定した長さと一致させてください。なお,-pオプションで指定した長さが256バイト以上の場合は,-pオプションに指定した先頭位置から255バイト分のデータがこのオプションの指定値と一致するときに,空文字列として扱われます。

指定値に空白が含まれる場合は,"(二重引用符)で囲んでください。

-r {フィールドデータ番号|empty_string}
  • フィールドデータ番号

    〜〈整数〉((1〜536,870,912))

    入力データファイルがCSV形式の場合に,入力データのフィールドデータ番号を指定します。

    入力データファイルのファイル形式が固定長形式の場合,このオプションは指定できません。

    フィールドデータ番号とは,1入力レコード中のフィールドデータの並び順に割り振られる番号のことです。入力レコードの先頭のフィールドデータの番号を1として,順番にカウントします。フィールドデータが空文字列の場合も,1つとしてカウントします。

  • empty_string

    入力データに空文字列を仮定する場合に指定します。

このオプションを省略した場合は,-nオプションに指定した列名の列の定義順と同じフィールドデータ番号のデータが,入力データとして仮定されます。

重要
  • このオプションに指定したフィールドデータ番号が,ほかのadbcolumninfoオペランドの-rオプションのフィールドデータ番号と同じでも,エラーになりません。同じフィールドデータが,処理対象表の複数の列に格納されます。

  • このオプションにフィールドデータ番号を指定した場合,該当するフィールドデータが入力レコード中に存在しないときは,エラーとなります。また,このオプションの指定を省略した場合,仮定されるフィールドデータ番号に該当するデータが入力レコード中に存在しないときは,エラーとなります。

  • 囲み文字で囲まれていない配列型のフィールドデータをインポートの対象外にした場合,意図しないフィールドデータがインポートされたり,adbimportコマンドがエラーになったりすることがあります。

    (例)

    <入力データ>

    {A,B,C},ABC,12345

    <列構成情報オプションの指定>

    adbcolumninfo -n C1 -r 3

    adbcolumninfo -n C2 -r 2

    C1列のデータ型がINTEGER型の場合,インポート対象のデータが下線部分の「C}」となるため,adbimportコマンドがエラーになります。

    この場合,配列型のフィールドデータを囲み文字で囲むと,上記の問題の発生を回避できます。

    <入力データの修正例>

    "{A,B,C}",ABC,12345

-b {hex|bin}

adbcolumninfoオペランドの-nオプションに指定した列名にバイナリ型が定義されている場合に,入力レコード中のバイナリデータの形式を指定します。

  • hex

    入力レコード中のバイナリデータを,16進形式のバイナリデータとして扱う場合に指定します。

  • bin

    入力レコード中のバイナリデータを,2進形式のバイナリデータとして扱う場合に指定します。

このオプションの指定を省略した場合,hexが仮定されます。

adbcolumninfoオペランドの-nオプションに指定した列名の列に定義されたデータ型と,このオプションに指定する値の関係を次の表に示します。

表17‒7 列に定義されたデータ型と,-bオプションに指定する値の関係

項番

-nオプションに指定した列名の列に定義されたデータ型

-bオプションに指定する値

入力データのデータ形式

1

バイナリ型

16進形式のバイナリデータとして扱われます。

2

hex

16進形式のバイナリデータとして扱われます。

3

bin

2進形式のバイナリデータとして扱われます。

4

バイナリ型以外のデータ型

列に定義されたデータ型として扱われます。

5

hex

エラーとなります(KFAA50265-Eメッセージが出力されます)。

6

bin

(凡例)

−:-bオプションの指定を省略します。

(4) 列構成情報オプションの指定値が原因のエラー

列構成情報オプションの指定値が原因でadbimportコマンドがエラーとなる場合には,次の2つが考えられます。

どちらの場合も,列構成情報オプションの指定値を修正したあと,再度adbimportコマンドを実行してください。

(a) 列構成情報オプションの指定値に誤りがある場合

列構成情報オプションの指定値に誤りがある場合に出力されるメッセージIDと,考えられる誤りについて,次の表に示します。これらの誤りを修正したあと,再度adbimportコマンドを実行してください。

表17‒8 列構成情報オプションの指定値に誤りがある場合に出力されるメッセージIDと,考えられる誤り

項番

メッセージID

入力データファイルのファイル形式

考えられる誤り

1

KFAA50265-E

CSV形式

  • adbcolumninfoオペランドの-nオプションに指定した列名が重複している

  • -rオプションに「empty_string」を指定したadbcolumninfoオペランドに,-bオプションを指定している

2

固定長形式

  • adbcolumninfoオペランドの-pオプションに指定した先頭位置長さ−1の値が,adb_import_input_record_sizeオペランドに指定した入力レコード長の値より大きい

  • adbcolumninfoオペランドの-pオプションに指定した長さと,adbcolumninfoオペランドの-cオプションの指定値の長さが不一致となっている

  • adbcolumninfoオペランドの-nオプションに指定した列名が重複している

3

KFAA50266-E

  • CSV形式

  • 固定長形式

表中の列数の最大値より多くのadbcolumninfoオペランドを指定している

表中の列数の最大値については,マニュアルHADB システム構築・運用ガイドHADBの最大値と最小値データベースに関する最大値と最小値を参照してください。

(b) 列構成情報オプションの指定値と処理対象表の整合性に問題がある場合

列構成情報オプションの指定値と処理対象表の整合性に問題がある場合に出力されるメッセージIDと,考えられる誤りについて,次の表に示します。これらの誤りを修正したあと,再度adbimportコマンドを実行してください。

表17‒9 列構成情報オプションの指定値と処理対象表の整合性に問題がある場合に出力されるメッセージIDと,考えられる誤り

項番

メッセージID

入力データファイルのファイル形式

考えられる誤り

1

KFAA50265-E

CSV形式

  • adbcolumninfoオペランドの-nオプションに指定した列名が,処理対象表に存在しない

  • adbcolumninfoオペランドの-bオプションを指定した列に定義されたデータ型が,バイナリ型でない

  • adbcolumninfoオペランドの-rオプションに「empty_string」を指定した列が,非ナル値制約が定義されていて,かつDEFAULT句が未指定になっている

  • -rオプションの指定値が同じadbcolumninfoオペランドが複数ある場合に,各-bオプションに指定した値が一致していない(-rオプションおよび-bオプションの指定を省略した場合,仮定された値を基に,一致しているかどうかが判定されます)

2

固定長形式

  • adbcolumninfoオペランドの-nオプションに指定した列名が,処理対象表に存在しない

  • adbcolumninfoオペランドの-nオプションに指定した列が文字形式で表現できる最大文字数よりも,adbcolumninfoオペランドの-pオプションに指定した長さの方が長い

  • adbcolumninfoオペランドの-nオプションに指定した列が文字形式で表現できる文字数に,adbcolumninfoオペランドの-pオプションに指定した長さが達していない

  • adbcolumninfoオペランドの-bオプションを指定した列に定義されたデータ型がバイナリ型でない

  • -pオプションの指定値が同じadbcolumninfoオペランドが複数ある場合に,各-bオプションに指定した値が一致していない(-bオプションの指定を省略した場合,仮定された値を基に,一致しているかどうかが判定されます)

3

KFAA50267-E

固定長形式

adbcolumninfoオペランドの-nオプションに指定しなかった列(入力データを空文字列として扱いたい列)に,非ナル値制約が定義されていて,かつDEFAULT句が未指定になっている