SQL*Loader で改行コードが入っているデータを読み込む

昔かなり悩んだのだが、今日ふとマニュアル読んでみたら普通に書いてあった。なぜ、気づかなかった?>当時の俺 orz


方法は以下の通り
1、レコード終了文字列を設定する。
2、1で設定したレコード終了文字列を使用したデータファイルを作成する。
たった、これだけ。

具体的な例

1、レコード終了文字列を設定する。

レコード終了文字列の設定はコントロールファイルの INFILE 指定の所で行う。
当たり前だが、レコード終了文字列にはデータ中に出てこない文字列を使用する事。
データファイル名が hoge.csv でレコード終了文字列を hoge にする場合の INFILE 句の記述例。

INFILE "hoge.csv" "str 'hoge'"

ファイル名の次にレコード終了文字列を指定する。str って何?と思うかもしれないが、そこはそういう書式なので黙ってそのまま書く。

2、1で設定したレコード終了文字列を使用したデータファイルを作成する。

hoge.csv の例

1,山田
太郎hoge
2,山田
花子hoge

このデータをロードするとテーブルに 2 レコード作成される。


各カラムのデータの頭にある改行文字は無視されるようで、上記のデータファイルは

1,山田
太郎hoge2,山田
花子hoge

と書いても

1,山田
太郎hoge

2,
山田
花子hoge

などとしても同じ内容のレコードが作成される。
そのため、カラムに改行文字で始まるデータを入れたい場合は、データを引用符で囲む必要がある。