Sqlldr操作
sql loader可以把一些以文字格式存放的資料順利地匯入到oracle資料庫中,它是一種在不同資料庫之間進行資料遷移非常方便而且通用的工具。缺點就是速度比較慢,另外對blob等型別的資料就有點麻煩了。
一、用法: SQLLDR keyword=value [,keyword=value,...]
二、有效的關鍵字:
userid -- ORACLE username/password
control – 控制檔案
log – 記錄的日誌檔案
bad – 壞資料檔案
data – 資料檔案
discard – 丟棄的資料檔案
discardmax – 允許丟棄資料的最大值 (全部預設)
skip -- Number of logical records to skip (預設0)
load -- Number of logical records to load (全部預設)
errors – 允許的錯誤記錄數 (預設50)
rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的記錄數,預設: 常規路徑 64, 所有直接路徑)
bindsize -- Size of conventional path bind array in bytes(預設256000)
每次提交記錄的緩衝區的大小(位元組為單位,預設256000)
silent --禁止輸出資訊 (header,feedback,errors,discards,partitions)
direct – 使用直通路徑方式匯入 (預設FALSE)
parfile -- parameter file: name of file that contains parameter specifications
parallel -- 並行匯入 (預設FALSE)
file -- File to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(預設FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable(預設FALSE)
readsize -- Size of Read buffer (預設1048576)
與bindsize成對使用,其中較小者會自動調整到較大者。sqlldr先計算單條記錄長度,乘以rows,如小於bindsize,不會試圖擴張rows以填充bindsize;如超出,則以bindsize為準。
external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE(預設NOT_USED)
columnarrayrows -- Number of rows for direct path column array(預設5000)
streamsize -- Size of direct path stream buffer in bytes(預設256000)
multithreading -- use multithreading in direct path
resumable -- enable or disable resumable for current session(預設FALSE)
resumable_name -- text string to help identify resumable statement
resumable_timeout -- wait time (in seconds) for RESUMABLE(預設7200)
date_cache -- size (in entries) of date conversion cache(預設1000)
注意:有兩種方式可以指定命令列引數:通過位置或者通過關鍵字。
(1)通過位置指定命令列引數的例子:'sqlldr scott/tiger foo';
(2)通過關鍵字指定命令列引數的例子:'sqlldr control=foo userid=scott/tiger';
不能前面使用關鍵字指定後面通過位置指定的混合方式;
比如:'sqlldr scott/tiger control=foo logfile=log' 是允許的;
但'sqlldr scott/tiger control=foo log'不允許。
通過位置指定命令列引數的時候,必須將“位置”放在user/passwd之前。
為清楚起見最好所有命令列引數都用關鍵字指定。
三、控制檔案:一個控制命令的指令碼檔案,通常以ctl結尾,內容如下:
LOAD DATA
INFILE 't.dat' //要匯入的檔案
// INFILE 'tt.date' //匯入多個檔案
// INFILE * //表示要匯入的內容就在control檔案裡 下面的BEGINDATA後面就是匯入的內容
INTO TABLE table_name // 指定裝入的表
BADFILE 'c:\bad.txt' //可選,指定壞檔案地址,預設在當前目錄下生成與原檔名一致的.bad檔案
//************* 以下是4種裝入表的方式
APPEND // 原先的表有資料 就加在後面
// INSERT //裝載空表 如果原先的表有資料 sqlloader會停止 預設值
// REPLACE // 原先的表有資料 原先的資料會全部刪除
// TRUNCATE // 指定的內容和replace的相同 會用truncate語句刪除現存資料
//************* 指定分隔符
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
// TERMINATED BY WRITESPACE //以空白分割
TRAILING NULLCOLS // 表的欄位沒有對應的值時允許為空
************* 下面是表的欄位
(
col_1 , col_2 ,col_filler FILLER // FILLER 關鍵字 此列的數值不會被裝載
// 如: lg,lg,not 結果 lg lg
)
如果沒宣告FIELDS TERMINATED BY ',' 時,可以用下面兩種方式實現同樣功能:
(1)、為每一列指定分隔符
(
col_1 [interger external] TERMINATED BY ',' ,
col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
)
(2)、用位置告訴欄位裝載資料
(
col_1 position(1:2),
col_2 position(3:10),
col_3 position(*:16), // 這個欄位的開始位置在前一欄位的結束位置
col_4 position(1:16),
col_5 position(3:10) char(8) // 指定欄位的型別
)
BEGINDATA //對應開始的 INFILE * 要匯入的內容就在control檔案裡
10,Sql,what
20,lg,show
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-557765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell解決我繁瑣的sqlldr操作SQL
- SQLLDR 命令SQL
- SQLLDR 教程SQL
- sqlldr使用SQL
- sqlldr詳解SQL
- sqlldr的使用SQL
- sqlldr用法全SQL
- sqlldr的例子SQL
- SQLLDR-樣例SQL
- 測試oracle sqlldrOracleSQL
- oracle sqlldr匯入OracleSQL
- sqlldr的問題SQL
- sqlldr詳解2SQL
- sqlldr增加判斷。SQL
- oracle sqlldr 總結OracleSQL
- Sqlldr效能引數SQL
- sqlldr與external tableSQL
- SQLLDR-CTL檔案SQL
- sqlldr的用法小結SQL
- 資料匯入SQLLDRSQL
- Oracle SQL Loader(sqlldr)OracleSQL
- 【sqlldr載入資料】SQL
- oracle sqlldr 與 外部表OracleSQL
- oracle----sqlldr用法(轉)OracleSQL
- sqlldr的用法總結SQL
- sqlldr配合shell解決sqlldr 控制檔案中引入變數的方案SQL變數
- Oracle sqlldr工具功能測試OracleSQL
- sqlldr效能調優測試SQL
- ociuldr sqlldr 文字匯出工具SQL
- 【SQL*Loader】sqlldr匯入SQL
- oracle sqlldr控制檔案模板OracleSQL
- 幾個SQLLDR的典型案例SQL
- SQLLDR的一個筆記SQL筆記
- sqlldr匯入日期函式SQL函式
- Oracle OCP(55):SQLLDR—CTL檔案OracleSQL
- Oracle OCP(56):SQLLDR-樣例OracleSQL
- Oracle SQL Loader(sqlldr)+ Externale TablesOracleSQL
- sqlldr Field in data file exceeds maximum lengthSQL