ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

SQL*Loaderでゾーン形式のデータを取り込む

これまた久々にOracleに触れてます。DB2ばっかりやってきたんで、忘れてることも結構多そうかも。。
まあ、「define _EDITOR = vi」は健在ですが。
そんなわけで、またCOBOLちっくな話なのですが、符号付きの数値をS9(5)とか宣言したりするのですが、マイナスの数値をファイルに出力してみると、面白い(?)ことになります。
12345 → 12345 (これは当然)
-12345 → 1234u (なんじゃこれ?)
というわけで、マイナス符号を付けると一つ桁が増えてしまうために(?)、-0〜-9を、p〜yに割り当ててあったりします。多分。
この形式で出力されたファイルを、SQL*Loaderでテーブルに取り込むとか言われたとき、「いやいや、そりゃあ無理でしょう。」とか思ったものですが、なぜか「できる派」と「できない派」がいて、やいのやいの言ってました。
つうか、そんなのやってみればいいじゃんとか思うわけですが、彼ら(彼女ら)は、なんでやらないのでしょうね?まったく不思議なものです。
というわけで、早速SQL*Loaderのマニュアルを探すわけですが、インターネットに接続できるのに見ちゃダメとかいう摩訶不思議なルールのために、ファイルサーバから探すことに。見つけてざっと眺めてみると、パックとかゾーンとか、COBOLちっくな用語が見つかることに気づいて、なんだか出来そうな雰囲気になってくる。
そのうち、ZONEDとかいう型をコントロールファイルに記述することで、出来ることが判明しました。一見すごい無理そうなことでも、がんばれば出来ることもあるのですね。
いろいろ言っていた人たちもみな安心したようで、ほんと良かったです(^o^)