- ベストアンサー
SQL*LoaderでCSVから指定した列のみインポートしたい。
SQL*Loaderを用いてOracleのテーブルにデータを格納 しようと思っています。 格納するデータはカンマ区切りのCSVファイルです。 入力CSVファイルは他テーブル用のファイルなので、 ローダーで落とし込むテーブルとは列数が異なります。 ですので、「CSVの5列目の値をテーブルのAA_NOというフィールドに 格納する。ということが可能なのでしょうか?」 CSVファイルのある行が a,b,c,d,e,f というデータの場合、テーブルには a,e,f とインポートしたいのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
さきほど回答しましたhamu1です。 訂正します。 a,b,c,d,e,f というデータの場合、テーブルには a,e,f をインポートするときには、 (略) ( a, "b" filler, "c" filler, "d" filler, e, f ) となります。 間違えちゃって、、すいません。
その他の回答 (1)
- hamu1
- ベストアンサー率66% (2/3)
コントロールファイルに下記のように記述すればできますよ。 ↓ここから↓↓ LOAD DATA INFILE 読み込むファイル名 APPEND←インポートモードはご自由に INTO テーブル名 FIELDS TERMINATED BY "," TRAILING NULLCOLS←オプションは好きにしてください。 ( a, ←読み込みたいテーブルのカラム名にしてください "b" filler, "c" filler, d filler, "e" filler, "f" filler ) ↑↑↑↑↑↑↑ こんなかんじです。 捨てたいフィールドには、fillerと書けば読み飛ばします。 ちなみに、 "b" filler, ↑この"b"は別にどんな名称でも構いません。("b1"でも"dummy"と書いても何でもよし) 意味わかりますでしょうか? 是非やってみてください。
お礼
hamu1さん、こんばんは。 理解するのに時間がかかりましたが、なるほどやっとわかりました。 TRAILING NULLCOLSの後の括弧の中には、 CSVの項目に対する設定なんですね・・・。 ずっとテーブルのカラムに対する設定だと思ってました・・・。 今まではテーブルもCSVも項目数が同じなので気づきませんでした。 上記の方法でインポートすることが出来ました。 これでまた一つ頭が良くなりました。 ありがとうございました。