プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

SQL*Loaderでchar(8)の項目にYYYYMMDD形式でシステム日付を固定でセットする

なんとなくマニュアル(Oracle Database ユーティリティの9 フィールド・リスト・リファレンスのSQL*Loaderを使用した入力データの生成の辺り)を読んだ感じだと、

データベースの列のデータ型は、CHARまたはDATE型にしてください。列がCHAR型の場合、日付は'dd-mon-yy'の書式でロードされます。

とあり、SYSDATEを使ったやり方では、DATE型に入れるか、CHAR型に固定のフォーマットしか出来ないらしい雰囲気。
入力データに含めることが出来れば問題ないのだが、そうでない場合は工夫が要ります。
今回はどうしたかというと、SQL*Loader用の制御ファイル自体を自動生成。

DATE1  CONSTANT  $YYYYMMDD

みたいなフィールドリストを作っておいて、$YYYYMMDDをシステム日付で置換するっていうやりかた。
そりゃあもう手段を選ばない強引なやり方ですが、まあ使い捨てツールへの適用だったので、出来ればいいでしょうっていう感じでした。
しかし、意外に不便なものですね。