みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL*LoaderでCSVから指定した列のみインポートしたい。

SQL*Loaderを用いてOracleのテーブルにデータを格納
しようと思っています。
格納するデータはカンマ区切りのCSVファイルです。

入力CSVファイルは他テーブル用のファイルなので、
ローダーで落とし込むテーブルとは列数が異なります。

ですので、「CSVの5列目の値をテーブルのAA_NOというフィールドに
格納する。ということが可能なのでしょうか?」

CSVファイルのある行が
a,b,c,d,e,f
というデータの場合、テーブルには
a,e,f
とインポートしたいのです。

よろしくお願いします。

投稿日時 - 2007-08-27 16:35:51

QNo.3291180

困ってます

質問者が選んだベストアンサー

さきほど回答しましたhamu1です。
訂正します。
a,b,c,d,e,f
というデータの場合、テーブルには
a,e,f
をインポートするときには、

(略)
(
a,
"b" filler,
"c" filler,
"d" filler,
e,
f
)

となります。
間違えちゃって、、すいません。

投稿日時 - 2007-08-28 15:55:56

お礼

hamu1さん、こんばんは。

理解するのに時間がかかりましたが、なるほどやっとわかりました。

TRAILING NULLCOLSの後の括弧の中には、
CSVの項目に対する設定なんですね・・・。
ずっとテーブルのカラムに対する設定だと思ってました・・・。
今まではテーブルもCSVも項目数が同じなので気づきませんでした。

上記の方法でインポートすることが出来ました。
これでまた一つ頭が良くなりました。
ありがとうございました。

投稿日時 - 2007-08-28 18:17:29

ANo.2

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

コントロールファイルに下記のように記述すればできますよ。
↓ここから↓↓

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"と書いても何でもよし)

意味わかりますでしょうか?
是非やってみてください。

投稿日時 - 2007-08-28 15:49:32

あなたにオススメの質問