in
MySQL
- 06 11月, 2013
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を使うことが出来ます。