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で確認)