sqlldrで無視(filler)したフィールドを再利用する方法
以下のようなフォーマットのスプールファイル(csv)があるとします。
各レコードの IP と PORT を、コロンで区切った形式に加工してDBに登録したいですって時。
HOST, IP フィールドを無視 (FILLER) して、PORTを取り込んだ時点で {IP}:{PORT} を返すSQLを実行してあげれば良いだけの話なんですが、’普通’ の FILLER では無視したフィールドをバインドしてくれない為、再利用が出来ないと。
そんな時に使うのが ‘BOUNDFILLER’ 。
公式リファレンスにまともな説明がなくて見つけるのに苦労しました。
(探し方に問題があるって?そんなわけ…)
以下、CTLファイル例になります。
OPTIONS ( LOAD=-1, ERRORS=-1 )
LOAD DATA
APPEND INTO TABLE TEST FIELDS TERMINATED BY "," TRAILING NULLCOLS ( HOST, IP BOUNDFILLER, SERVER ":IP || ':' || :SERVER", )
こいつを叩くと…
おめでたし!














