「Oracle XE」環境でオラクルのユーティリティ「SQL*Loader」を使ってCSVデータをオラクルのテーブルに格納(ロード)してみます。
「SQL*Loader」は「Oracle XE」に標準でインストールされています。
「SQL*Loader」の概念フローは下記になります。
制御ファイル:SQL*Loaderの動作を決める定義を記述したファイル
データファイル:ロード元のファイル
テーブル:ロード先のテーブル
ログファイル:ロード結果を出力するファイル
不良ファイル:ロード出来なかったデータを出力するファイル
廃棄ファイル:廃棄されたファイル
今回の環境はテーブルが既に作成済みで「c:\」にコントロールファイル、データファイルを格納した状態で実行することを想定しています。
■制御ファイル(ファイル名:custom_mst.ctl)
— sqlldr test2/test@xe control=custom_mst.ctl log=c:\custom_mst.log  ←コメント行に実行コマンド記述
OPTIONS(LOAD=-1,SKIP=1,ERRORS=-1,ROWS=-1)  ←「-1」は無制限の意味、「SKIP=1」は1行目をスキップする意味
	LOAD DATA
	INFILE ‘c:\custom_mst.csv’  ←データファイル
	BADFILE ‘c:\custom_mst.bad’  ←不良ファイル
	APPEND  ←行追加
	INTO TABLE custom_mst  ←出力先テーブル
	FIELDS TERMINATED BY “,”  ←フィールド区切り文字
	(
		cust_no,  ←カラム名
		cust_name,  ←カラム名
		address,  ←カラム名
		tel,  ←カラム名
		mail,  ←カラム名
		insert_dt,  ←カラム名
		update_dt  ←カラム名
	)
・OPTIONS
  LOAD:ロード対象レコード数
  SKIP:スキップレコード数
  ERRORS:エラー許容レコード数
  ROWS:コミットタイミング
■データファイル(ファイル名:custom_mst.csv)
cust_no,cust_name,address,tel,mail,insert_dt,update_dt
00000001,山田花子,東京都新宿区西新宿1-1-1,03-5554-1111,hanako@docomo.ne.jp,20140401,20140401
00000002,山田太郎,神奈川県大和市中央1-2-3,04-6263-1111,taro@docomo.ne.jp,20140401,20140401
00000003,鈴木一郎,東京都品川区南品川3-3-3,03-5555-1000,ichiro@gmail.com,20140401,20140401
00000004,株式会社ACB,千葉県柏市10-10-10,04-7173-1000,send@abc.com,20140401,20140401
00000005,長澤まさみ,新潟県南魚沼市中央2-3-9,074-555-0001,masami@mail.com,20140401,20140401
00000006,石原さとみ,沖縄県那覇市南方4-4-4,09-5555-9999,satomi@gmail.com,20140401,20140401
00000007,有村架純,青森県弘前市大町1-1-1,02-3333-4444,kasumi@ywz.jp,20140401,20140401
00000008,上戸彩,石川県加賀市幸町4-5-6,05-5555-5555,aya@zaqwsx.com,20140401,20140401
00000009,広瀬アリス ,大阪府和泉市中央南2-2-2,06-9999-1111,alice@wonderland.com,20140401,20140401
00000010,北川景子,埼玉県さいたま市北区本郷7-6-8,04-4321-1000,keiko@ntt.jp,20140401,20140401
00000011,田中将大,東京都杉並区今川1-2-4,03-0001-1010,masahitro@yahoo.co.jp,20140401,20140401
00000012,勝みなみ,東京都中野区中央5-5-5,03-3333-9090,minami@katsu.co.jp,20140401,20140401
00000013,香川真司,東京都新宿区歌舞伎町9-9-9,03-5551-1115,shinji@abc.com,20140401,20140401
00000014,株式会社XYZ,愛知県名古屋市中区2-2-2,052-666-1111,mail@xyz.co.jp,20140401,20140401
00000015,黒木メイサ,北海道網走市北網走100-100-90,08-8080-9090,meisa@meisa.jp,20140401,20140401
00000016,松山英樹,茨城県つくば市筑波5-5,03-9911-1199,hideki@gmail.com,20140401,20140401
00000017,桜庭ななみ,東京都渋谷区道玄坂6-7-1,03-1010-1010,nanami@gmail.com,20140401,20140401
00000018,深田恭子,京都府京都市左京区1-1-2,06-6666-6666,kyoko@au.com,20140401,20140401
00000019,石川遼,千葉県千葉市中央5-5-1,04-7777-1111,ryo@ishikawa.com,20140401,20140401
00000020,BB株式会社,東京都品川区本品川9-8-7,03-9876-5432,mail@bb.co.jp,20140401,20140401
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
■実行
Windowsのスタートメニューから「コマンド プロンプト」を起動します。
「c:\」に移動後コマンドを実行します。
C:\>sqlldr test2/test@xe control=custom_mst.ctl log=c:\custom_mst.log
ログイン:test2
パスワード:test
接続識別子:xe
制御ファイル:custom_mst.ctl
ログファイル:c:\custom_mst.log
■ログファイル(ファイル名:custom_mst.log)
SQL*Loader: Release 11.2.0.2.0 – Production on 火 4月 29 17:58:00 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
制御ファイル:    custom_mst.ctl
データファイルc:\custom_mst.csv
  不良ファイル:  c:\custom_mst.bad
  廃棄ファイル:  指定なし
(すべて廃棄できます)
ロード数: ALL
スキップ数: 0
許容エラー数: ALL
バインド配列:    4294967295行、最大256000バイト
継続文字:    指定なし
使用パス:      従来型
表CUSTOM_MST、 ロード済 すべての論理レコードから
この表に対する有効な挿入オプション: APPEND
   Column Name                  Position   Len  Term Encl Datatype
—————————— ———- —– —- —- ———————
CUST_NO                            FIRST    *  ,     CHARACTER
CUST_NAME                           NEXT    *  ,     CHARACTER
ADDRESS                             NEXT    *  ,     CHARACTER
TEL                                 NEXT    *  ,     CHARACTER
MAIL                                NEXT    *  ,     CHARACTER
INSERT_DT                           NEXT    *  ,     CHARACTER
UPDATE_DT                           NEXT    *  ,     CHARACTER            
ROWSパラメータに使用される値が8323541から141に変更されました
レコード22: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード23: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード24: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード25: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード26: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード27: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード28: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード29: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード30: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード31: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード32: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード33: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード34: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード35: 拒否されました。- 表CUSTOM_MST,列UPDATE_DTでエラーが発生しました。
論理レコードが終了する前に列が見つかりませんでした。(TRAILING NULLCOLSを使用)
レコード1: 拒否されました。- 表CUSTOM_MST,列INSERT_DTでエラーが発生しました。
ORA-01841: (周)年は-4713と+9999の間の0以外の数字を指定する必要があります
表CUSTOM_MST:
  20行のロードに成功しました。
  15行はデータ・エラーのためロードされませんでした。
  0行はWHEN句のエラーのためロードされませんでした。
  0行はすべてのフィールドがNULLのためロードされませんでした。
バインド配列に割り当てられた領域:   254646バイト(141行)
読取りバッファのバイト数:  1048576
スキップされた論理レコードの合計:           0
読み込まれた論理レコードの合計:            35
拒否された論理レコードの合計:              15
廃棄された論理レコードの合計:        0
実行開始火 4月  29 17:58:00 2014
実行終了火 4月  29 17:58:00 2014
実行時間:        00: 00: 00.22
CPU時間 :        00: 00: 00.04
■不良ファイル(ファイル名:custom_mst.bad)
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,,
cust_no,cust_name,address,tel,mail,insert_dt,update_dt
今回のエラーデータは再度取り込む必要がありませんのでこの時点でロードは終了です。
取り込むべきデータがエラーデータに出力された場合はエラーファイルのエラー内容を確認し、エラーデータ修正後再ロードします。
 
  | 
 
  | 




ペットと旅行するための総合情報サイト