一:sql loader 的特點
oracle自己帶了很多的工具可以用來進行資料的遷移、備份和恢複等工作。但是每個工具都有自己的特點。
比如說exp和imp可以對資料庫中的資料進行匯出和匯出的工作,是一種很好的Database Backup和恢複的工具,因此主要用在資料庫的熱備份和恢複方面。有著速度快,使用簡單,快捷的優點;同時也有一些缺點,比如在不同版本資料庫之間的匯出、匯入的過程之中,總會出現這樣或者那樣的問題,這個也許是oracle公司自己產品的相容性的問題吧。
sql loader 工具卻沒有這方面的問題,它可以把一些以文字格式設定存放的資料順利的匯入到oracle資料庫中,是一種在不同資料庫之間進行資料移轉的非常方便而且通用的工具。缺點就速度比較慢,另外對blob等類型的資料就有點麻煩了。
二:sql loader 的協助
C:/>sqlldr
三:sql loader使用例子
a)SQLLoader將 Excel 資料匯出到 Oracle
1.建立SQL*Loader輸入資料所需要的檔案,均儲存到C:/,用記事本編輯:
控制檔案:input.ctl,內容如下:
load data --1、控制檔案標識
infile 'test.txt' --2、要輸入的資料檔案名為test.txt
append into table test --3、向表test中追加記錄
fields terminated by X'09' --4、欄位終止於X'09',是一個定位字元(TAB)
(id,username,password,sj) -----定義列對應順序
a、insert,為預設方式,在資料裝載開始時要求表為空白
b、append,在表中追加新記錄
c、replace,刪除舊記錄,替換成新裝載的記錄
d、truncate,同上
在DOS視窗下使用SQL*Loader命令實現資料的輸入
C:/>sqlldr userid=system/manager control=input.ctl
預設記錄檔名為:input.log
預設壞記錄檔案為:input.bad
2.還有一種方法
可以把EXCEL檔案另存新檔CSV(逗號分隔)(*.csv),控制檔案就改為用逗號分隔
LOAD DATA
INFILE 'd:/car.csv'
APPEND INTO TABLE t_car_temp
FIELDS TERMINATED BY ","
(phoneno,vip_car)
b)在控制檔案中直接匯入資料
1、控制檔案test.ctl的內容
-- The format for executing this file with SQL Loader is:
-- SQLLDR control=<filename> Be sure to substitute your
-- version of SQL LOADER and the filename for this file.
LOAD DATA
INFILE *
BADFILE 'C:/Documents and Settings/Jackey/案頭/WMCOUNTRY.BAD'
DISCARDFILE 'C:/Documents and Settings/Jackey/案頭/WMCOUNTRY.DSC'
INSERT INTO TABLE EMCCOUNTRY
Fields terminated by ";" Optionally enclosed by '"'
(
COUNTRYID NULLIF (COUNTRYID="NULL"),
COUNTRYCODE,
COUNTRYNAME,
CONTINENTID NULLIF (CONTINENTID="NULL"),
MAPID NULLIF (MAPID="NULL"),
CREATETIME DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (CREATETIME="NULL"),
LASTMODIFIEDTIME DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (LASTMODIFIEDTIME="NULL")
)
BEGINDATA
1;"JP";"Japan";1;9;"09/16/2004 16:31:32";NULL
2;"CN";"China";1;10;"09/16/2004 16:31:32";NULL
3;"IN";"India";1;11;"09/16/2004 16:31:32";NULL
4;"AU";"Australia";6;12;"09/16/2004 16:31:32";NULL
5;"CA";"Canada";4;13;"09/16/2004 16:31:32";NULL
6;"US";"United States";4;14;"09/16/2004 16:31:32";NULL
7;"MX";"Mexico";4;15;"09/16/2004 16:31:32";NULL
8;"GB";"United Kingdom";3;16;"09/16/2004 16:31:32";NULL
9;"DE";"Germany";3;17;"09/16/2004 16:31:32";NULL
10;"FR";"France";3;18;"09/16/2004 16:31:32";NULL