4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sql Loader 列の読み飛ばし方(CSV・テーブル両方)

Posted at

Sql Loaderで列の読み飛ばし方がわからなくてハマったので、解決法をメモしておく。
環境:Oracle 11g
※環境が手元にないのでコードは未テストです。

テーブルの読み飛ばし方

【やりたいこと】
下記のようなCSVのデータがあった時に、テーブル側の列(B,D)を読み飛ばす。

CSVのデータ
A,C,E

テーブル
列A,列B,列C,列D,列E

sample.CTL
省略...
(
 A
,B CONSTANT ' '
,C
,D COSTANT ' '
,E
)

正確には読み飛ばすのではなく、テーブルの項目数にCSVの項目数が合うように定数などを編集します。
本当は項目の初期値を設定できればよかったのですが、やり方がわかりませんでした(orz

どうやら、CONSTANTを指定するとCSVを読み進める代わりに
定数を読み込んでくれるようです。(テーブルの列BならCSVのCの代わりに定数' ')

なので、上記の場合CSVとテーブルの項目のマッピングは以下のようになります。
テーブル|CSV
列A|A
列B|' '(定数)
列C|C
列D|' '(定数)
列E|E

※定数以外でも同じようなことができるかは未調査。

CSVの読み飛ばし方

【やりたいこと】
下記のようなCSVのデータがあった時に、CSV側の列(B,D)を読み飛ばす。

CSVのデータ
A,B,C,D,E

テーブル
列A,列C,列E

sample.CTL
省略...
(
 A
,"B" filler
,C
,"D" filler
,E
)
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?