loadコマンドにてこずった!

IQのデータロードコマンドであるLOAD文の仕様がいつの間にか変わった話。

 

CREATE TABLE mytab( col01 int, col02 varchar(100));

に以下のデータをロードすると仮定。

1,ABC\n
2,XYZ\n

(後続の説明のために、行区切り文字をわざと記述)

すると、LOAD文の書き方は例えば以下のようになる。

LOAD TABLE mytab(col01, col02)
FROM '/tmp/mytab_1.csv', '/tmp/mytab_2.csv'
quotes off
escapes off
row delimited by '\n'
format bcp;

ポイントは、format bcp

bcpはver.16くらい(?)に追加されたformat句の新しいパラメータ値で、早い話がAdaptive Server Enterprise(ASE)のbcpコマンド互換のファイルフォーマットを扱います、という指定。

なんとこれが無いと、最後の項目の後ろにカラム区切り文字が来ることを期待される!

つまり、

1,ABC,\n

2.XYZ,\n

のデータが正解。

これが分からず、カラムリストでいろいろ対応しようとして数日間、はまってしまったのであった。

(SAP IQ 16.1 SP1で確認)