SQL*Loader

[SQL*Loader] データ列を読み飛ばしてロードする

投稿日:2025年11月25日 更新日:

SQL*Loaderで、取り込み元ファイルの一部の列を読み飛ばして(テーブルには取り込まずに)ロードするサンプルです。

前提

以下のCSVファイルから、以下のテーブルにロードします。
CSVファイルには「備考」列がありますが、この列はテーブルには取り込まず読み飛ばします。

(商品マスタ.csv)
商品コード,商品名,備考,単価,適用日 1001,みかん,国産,30,2021/1/1 1002,りんご,輸入,100,2021/1/2 1003,バナナ,輸入,200,2021/1/3
【商品マスタ】
列名
CDCHAR(4)
NAMEVARCHAR2(20)
PRICENUMBER(5,0)
TEKIYODATE

テーブル「商品マスタ」には、CSVファイルにある「備考」に対応する列がありません。

サンプル

制御ファイル(ctlファイル)

実行コマンド

実行例
C:¥>sqlldr usr01/usr01@db01 control=c:¥syohin.ctl log=c:¥商品マスタ.log

実行結果

【商品マスタ】
CDNAMEPRICETEKIYO
1001みかん302021/1/1
1002りんご1002021/1/2
1003バナナ2002021/1/3

「備考」列(国産、輸入)はテーブルに取り込まれていません。

解説

  • 読み飛ばしたい列には、列名の後ろに「FILLER」を指定します。列名はダミーの名前で構いません(テーブル側に同名の列は不要です)。
  • FILLERを指定した列は、ファイルからは読み込まれますが、テーブルへの取り込みは行われません。
  • 読み飛ばしたい列がファイルの途中にある場合は、注意が必要です。その列を制御ファイルの列リストから単純に省いてしまうと、後続の列の位置がずれてしまい、意図しない値が取り込まれてしまいます。必ずFILLERとして列リストに記述し、列の対応関係を崩さないようにしてください。
  • なお、読み飛ばしたい列がファイルの一番最後にある場合に限っては、その列を制御ファイルの列リストに書かなくても、SQL*Loaderが自動的に無視します。この場合はFILLERを使わなくても問題ありません。

関連記事


スポンサーリンク

スポンサーリンク

-SQL*Loader

執筆者:



comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサーリンク