SQL LOADER
資料匯入
1.控制檔案內容如下:
(1) LOAD DATA
(2) INFILE *
(3) INTO TABLE DEPT [INSERT|TRUNCATE|APPEND|REPLACE|]
(4) FIELDS TERMINATED BY ',' [WHITESPACE] [OPTIONALLY ENCLOSED BY '"'] [TRAILING NULLCOLS]
fields terminated by X'09' --以X'09'為分隔符,是一個製表符(TAB) 其它還有X'07'
(5) (DEPTNO, DNAME, LOC ) [filler] [ position(1:2)] [column date 'yyyymmdd'] [column char (255)]
(6) BEGINDATA
(7) 10,Sales,Virginia
(8) 20,Accounting,Virginia
(9) 30,Consulting,Virginia
(10) 40,Finance,Virginia
LOAD DATA (1):這會告訴SQLLDR要做什麼(在這個例子中,則指示要載入資料)。SQLLDR還可以執行CONTINUE_LOAD,也就是繼續載入。只有在繼續一個多表直接路徑載入時才能使用後面這個選項。
INFILE * (2):這會告訴SQLLDR所要載入的資料實際上包含在控制檔案本身上,如第6~10行所示。也可以指定包含資料的另一個檔案的檔名。如果願意,可以使用一個命令列引數覆蓋這個INFILE語句。要當心,命令列選項總會涵蓋控制檔案設定。
INTO TABLE DEPT (3):這會告訴SQLLDR要把資料載入到哪個表中(在這個例子中,資料要載入到DEPT表中)。
FIELDS TERMINATED BY ‘,’(4):這會告訴SQLLDR資料的形式應該是用逗號分隔的值。為SQLLDR描述輸入資料的方式有數十種;這只是其中較為常用的方法之一。
(DEPTNO, DNAME, LOC) (5):這會告訴SQLLDR所要載入的列、這些列在輸入資料中的順序以及資料型別。這是指輸入流中資料的資料型別,而不是資料庫中的資料型別。在這個例子中,列的資料型別預設為CHAR(255),這已經足夠了。
預設的載入選項是INSERT(而不是APPEND、TRUNCATE或REPLACE)。要執行INSERT, SQLLDR就認為表為空。如果想向DEPT表中增加記錄,可以指定載入選項為APPEND;或者,為了替換DEPT表中的資料,可以使用REPLACE或TRUNCATE。REPLACE使用一種傳統DELETE語句;因此,如果要載入的表中已經包含許多記錄,這個操作可能執行得很慢。TRUNCATE則不同,它使用 TRUNCATE SQL命令,通常會更快地執行,因為它不必物理地刪除每一行。但是TRUNCATE 不能回退。
OPTIONALLY ENCLOSED BY '"' 指部分欄位可以用雙引號包起來。
TERMINATED BY WHITESPACE會解析這個串,查詢空白符(製表符、空格和換行符)的第一次出現,然後繼續查詢,直至找到下一個非空白符。
載入這樣的定界資料時,很可能想逃過輸入記錄中的某些列。例如,你可能載入欄位1、3和5,而跳過第2列和第4列。為此,SQLLDR提供了FILLER關鍵字。這允許你對映一個輸入記錄中的一列,但不把它放在資料庫中。
通常會有一個有某個外部系統生成的平面檔案,而且這是一個定長檔案,其中包含著固定位置的資料(positional data)。不用使用FIELDS TERMINATED BY子句。
TRAILING NULLCOLS 如果輸入記錄中不存在某一列的資料,SQLLDR就會為該列繫結一個NULL值。
[column date 'yyyymmdd'] 控制檔案中使用DATE資料型別,並指定要使用的日期掩碼。這個日期掩碼與資料庫中TO_CHAR和TO_DATE中使用的日期掩碼是一樣的。
[column char (255)]預設的輸入欄位長度為255字元。如果你的欄位比這要長,就會將收到一個錯誤訊息,這並不是說這個資料無法放在資料庫列中;而是說,它指示SQLLDR希望有不少或等於255位元組的輸入資料,不過稍多一些也會接收。對此解決方案很簡單,只需在控制檔案中使用CHAR(N),在此N要足夠大,能容納輸入檔案中最長的欄位長度。
SQLLDR的許多選項既可以放在控制檔案中,也可以在命令列上使用。例如,可以使用INFILE FILENAME,也可以使用SQLLDR…DATA=FILENAME。命令列會覆蓋控制檔案中的任何選項。不能指望一定會使用控制檔案中的選項,因為執行SQLLDR的人可能會通過命令列覆蓋這些選項。
2.ctl檔案範例
Load data
infile 'e:\l\data.txt'
into table t1
fields terminated by '|'
TRAILING NULLCOLS
(
C1 char(400),
C2 date 'yyyymmdd'
)
3.相關命令
在NT下,SQL*LOADER的命令為SQLLDR,在UNIX下一般為sqlldr/sqlload
F:\oracle>SQLLDR SCOTT/TIGER CONTROL=TEST.CTL
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23577591/viewspace-682502/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL*Loader 詳解SQL
- Oracle SQL Loader(sqlldr)OracleSQL
- sql loader使用例子SQL
- SQL*Loader 常用知識SQL
- SQL*Loader使用方法SQL
- 【SQL*Loader】sqlldr匯入SQL
- Data Utilities : SQL*Loader (56)SQL
- oracle sql loader 的使用OracleSQL
- Maximizing SQL*Loader PerformanceSQLORM
- SQL_LOADER小結SQL
- 【移動資料】SQL*LoaderSQL
- Oracle SQL Loader(sqlldr)+ Externale TablesOracleSQL
- Oracle SQL*Loader使用案例(一)OracleSQL
- Oracle SQL*Loader使用案例(二)OracleSQL
- Oracle SQL*Loader使用案例(三)OracleSQL
- Oracle SQL*Loader使用案例(四)OracleSQL
- SQL*Loader的使用方法SQL
- Some good articles about SQL*loaderGoSQL
- 使用sql loader導資料SQL
- Oracle SQL*Loader 使用指南OracleSQL
- SQL LOADER的使用方法SQL
- SQL*LOADER 的使用小結SQL
- windows sql loader批處理WindowsSQL
- SQL*Loader-805的解決SQL
- SQL*Loader的使用總結(四)SQL
- SQL*Loader的使用總結(三)SQL
- SQL*Loader的使用總結(二)SQL
- SQL*Loader的使用總結(一)SQL
- 學習oracle sql loader 的使用OracleSQL
- sql loader的一點總結SQL
- 使用SQL*Loader建立外部表之二SQL
- 使用SQL*Loader建立外部表之一SQL
- 用SQL*Loader載入外部資料SQL
- SCRIPT TO GENERATE SQL*LOADER CONTROL FILESQL
- SQL*Loader 筆記 (二) 效能優化SQL筆記優化
- ORACLE SQL Loader的詳細語法OracleSQL
- 【聽海日誌】之Oracle SQL*LOADEROracleSQL
- Oracle SQL Loader的詳細語法 <轉>OracleSQL