- ベストアンサー
SQL*Loaderの事で その2
CSVファイルの中に読み飛ばしたいアイテムがるのですがそういって方法ってありますか? 例)CSVデータの2個目(ZZX,ZZW)を読み飛ばす ----- XXXXXX.ctl ----- XXXX_CD char, XXXX_NM char ----- XXXXXX.csv ----- 0001,ZZX,商品名1 0002,ZZW,商品名2 可能か不可能かだけでも教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 #1 のmuyoshid です。 すみません。 私も質問の内容を読み違えたようで。 一つ確認させて下さい。 データファイルって、固定長でスキップさせる項目の位置が決まっていますか? 位置が決まっているようであれば、制御ファイルのPOSITION句で対応できると 思います。 POSITION句については、先ほどのマニュアルの「データフィールドの位置指定」 をご確認下さい。 データ長が可変でカンマ等で区切られている場合は難しいと思います。 取りあえず、ダミーのフィールドに読み込んで、後からAlter table で 列を削除するか、ダミーの表に全項目読み込んでそこから不要な項目を 削除した形でデータ移行 (View でも可) をされてはいかがでしょうか?
その他の回答 (1)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 SQL*Loader で読み込むデータを選択するとのことですが、 制御ファイルのWHEN 句を使用すれば可能だと思います。 詳細は、「Oracle8i ユーティリティガイド 第(2)部 第5章」 「SQL*Loader 制御ファイル・リファレンス」内の 「表への論理レコードのロード」に 「ロードする行の選択」と言う項目に記載されています。
補足
質問のしかたが悪かったです。 このレコードをスキップするのでなく2つ目のアイテムだけを読み飛ばしたいのですが?
お礼
やっぱりそうですか?データが固定長なら読み飛ばしが可能なのは、マニュアル(POSITION)で出来るのは判ったんですが、可変長はダメみたいですね。色々とアドバイスありがとうございました。 PS:「muyoshidさん」には、今回も前回も大変お世話になってます。また、SQL*Loaderの質問をした時は宜しくお願いします。