SQL*Loader入門

SQL*Loaderとは、CSVファイルなどに入力されている大量のデータを
一括してOracleのデータベースへ登録できるツールです。

insert文を発行するよりも高速なので便利です。

今回はSQL*Loaderの基本的な使い方をご紹介します。

SQL*LoaderはCTLファイルに設定を書き込み、その設定を元に実行します。
実行するには、CTLファイルと読み込みたいファイルを同ディレクトリに置き
SQL*Loaderを起動させることで登録できます。
CTLファイルは大きく分けて3つの設定が必要です。

1.OPTIONS
ここでは、読み込み時の設定をします。

  • LOAD:読み込むレコード数
  • SKIP:読み込まないレコード数
  • ERRORS:許容するエラー数
  • ROWS:何レコードでコミットするか

2.LOAD DATA
ここでは、読み込むファイルと、不良・廃棄ファイルの書き込み先を指定します。

  • INFILE:読み込むファイル
  • BADFILE:不良ファイル。ロードしようとしてはじかれたレコード
  • DISCARDFILE:廃棄ファイル。ロード対象として不正とみなされたレコード

3.INTO TABLE
ここでは、登録先テーブルの設定をします。

レコード登録モード
  • INSERT:新規にデータを登録する。この場合、テーブルは空でなければならない
  • APPEND:データを追加する
  • REPLACE:テーブルの全データ削除し、新規にデータを登録する。DELETEに相当
  • TRUNCATE:テーブルの全データ削除し、新規にデータを登録する。TRUNCATEに相当
登録テーブル指定
  • INTO TABLE:登録先テーブル
レコード登録条件
  • TERMINATED BY:データ区切り文字の指定
  • OPTIONALLY ENCLOSED BY:データ囲い文字の指定
  • WHEN:レコード登録条件指定

今回紹介したのはほんの一例です。
まだまだ様々な設定があります。
最後にこれらを使ったCTLファイルの例をご紹介します。

OPTIONS( --決まり文句
  --これでコメントが書けます。
  --100件読み込む
   LOAD=100,
  --上から3行目までを読み込まない
   SKIP=3,
  --エラー100件まで許容
   ERRORS=100,
  --10件ごとにコミット
   ROWS=10
)

LOAD DATA  --決まり文句
  --読み込むファイル
   INFILE 'C:\Syain_data.csv'
  --不良ファイル。ロードしようとしてはじかれたレコード
   BADFILE 'C:\badfile.log'
  --廃棄ファイル。ロード対象として不正とみなされたレコード
   DISCARDFILE 'C:\discardfile.log'

  --データを追加登録
   APPEND
  --登録先テーブルをSYAIN_TABLEに指定
   INTO TABLE SYAIN_TABLE

FIELDS  --決まり文句
  --区切り文字はカンマ(,)
   TERMINATED BY','
  --囲い文字はダブルクォート(")
   OPTIONALY ENCLOSED BY'"'

(
   ID INTEGER
   NAME CHAR(20)
   BIRTHDAY DATE 'yyyy/mm/dd'  --yyyy/mm/ddにフォーマット
)

 

"1","tanaka","19850216"
"2","yamada","19771029"
"3","sato","19900903"

これで基本的なSQL*Loaderを使うことが出来ます。