データベース -> ORACLE -> SQL*Loader

SQL*Loaderによるデータロード

データロード内容

サンプルとして以下のテーブルに EXCEL で作成した cvsデータをロードする。
ロードするテーブル
SQL> desc adr
 Name                        Null?    Type
 --------------------------- -------- --------------------
 CODE                        CHAR(5)
 NAME                        CHAR(30)
 EMAIL                       CHAR(30)
SQL>
ロードするデータ
$ cat new.dat
1,suzuki,suzuki@seattle.example.co.jp,1973-08-31
2,saitou,saitou@la.example.co.jp,1970-05-11
3,matsui,matsui@newyork.example.co.jp,1974-11-02
4,okajima,okajima@boston.example.co.jp,1976-01-25
5,matsuzaka,matsuzaka@bonston.example.co.jp,1985-07-21

SQL*Loader 制御ファイルの作成

制御ファイル sql_load.ctl
LOAD DATA
INFILE '/var/tmp/new.dat' "str '\n'" ロードするデータファイルを指定
INTO TABLE adr                       テーブル名を指定
FIELDS TERMINATED BY ','             データの区切り文字を指定
OPTIONALLY ENCLOSED '"'              データのエスケープ記号を指定
(
CODE
,NAME                        テーブルの列名を記述する
,EMAIL
,BIRTH_YMD  "TO_DATE(:BIRTH_YMD,'YYYY-MM-DD')"
)



SQL*Loader sqlldr実行パラメータファイルの作成

実行時のパラメータ指定内容を記述する。直接コマンドで入力しても可能
パラメータファイル sql_load.par
USERID=User/*****
CONTROL=/var/tmp/sql_load.ctl
ERRORS=9999
LOG=/var/tmp/sql_load.log

SQL*Loader を実行する

$ sqlldr PARFILE=/var/tmp/sql_load.par

SQL*Loader: Release 10.2.0.1.0 - Production on Wed Jun 13 19:06:51 2007
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Commit point reached - logical record count 64
Commit point reached - logical record count 128
Commit point reached - logical record count 192
Commit point reached - logical record count 256
Commit point reached - logical record count 320
Commit point reached - logical record count 384
Commit point reached - logical record count 448
Commit point reached - logical record count 512
Commit point reached - logical record count 576
Commit point reached - logical record count 640
Commit point reached - logical record count 704
Commit point reached - logical record count 768
Commit point reached - logical record count 832
Commit point reached - logical record count 896
Commit point reached - logical record count 960
Commit point reached - logical record count 1000
$

 1000件ロードした場合のサンプル 

SQL*Loader 結果ログファイル sql_load.log
Total logical records skipped:          0
Total logical records read:          1000
Total logical records rejected:         0
Total logical records discarded:        0

Run began on Wed Jun 13 19:06:51 2007
Run ended on Wed Jun 13 19:06:53 2007

Elapsed time was:     00:00:01.74
CPU time was:         00:00:00.30
ロードされたか確認してみる
SQL> select * from adr;

CODE  NAME      EMAIL                           BIRTH_YMD
----- --------- ------------------------------- ----------
1     suzuki    suzuki@seattle.example.co.jp    1973-08-31
2     saitou    saitou@la.example.co.jp         1970-05-11
3     matsui    matsui@newyork.example.co.jp    1974-11-02
4     okajima   okajima@boston.example.co.jp    1976-01-25
5     matsuzaka matsuzaka@bonston.example.co.jp 1985-07-21

5 rows selected.

SQL>
      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google