Oracle Sql Loader使用示例

今天研究了下Oracle 數據庫的一個小工具 SQL LOADER,感覺用起來還是挺方便的,特別是用來從csv中導入數據。

安裝完成oracle數據庫後,就帶了這個工具,啓動的命令如下:

sqlldr userid=om/om control=load_line.ctl log=line.log

其中userid是數據庫用戶名和密碼,control參數是一個控制文件,或者說導入的腳本,log是導入的日誌。

主要的導入邏輯都要寫在control文件中,下面是一個例子:

OPTIONS(SKIP=1)                                   -- 跳過第一行
load data                                                    -- 加載數據
CHARACTERSET ZHS16GBK               --字符集
infile 'lines.csv'                                           -- 數據文件
badfile 'line.bad'                                         -- 導入不成功的行,存放在一個文件中
discardfile 'line.dis'                                    -- 不符合刪選條件的 存放在一個文件中
append into table CONTRACT_LINE     -- 導入方式是追加記錄到表:CONTRACT_LINE
fields terminated by ","                              -- 數據以逗號分隔
trailing nullcols                                           -- column可以爲空
 -- 以下是表中的部分字段,順序要和數據文件中的順序一致
(ID "TO_NUMBER(:ID)",                            -- 使用TO_NUMBER函數把字符串轉成NUMBER類型
HEADER_ID "TO_NUMBER(:HEADER_ID)",
LINE_NO "TO_NUMBER(:LINE_NO)",
SHIP_MNFT_NO,
SHIP_PLANT,
PLANT_TYPE,
SHIP_OWNER,
OWNER_TYPE,
SHIP_BROKER,
BROKER_TYPE,
SHIP_CLSFCT_SOCIETY,
SHIP_NAME,
IMO_NO,
SHIP_NO_INTERNAL,
CONTRACT_TYPE,
SIGN_OFF_DATE "to_date(:SIGN_OFF_DATE,'yyyy/mm/dd')",   -- 把字符串轉成日期格式
EFFECTIVE_DATE "to_date(:EFFECTIVE_DATE,'yyyy/mm/dd')",
ABANDON_DATE "to_date(:ABANDON_DATE,'yyyy/mm/dd')",
MEMO,
PRICE "TO_NUMBER(:PRICE)",
WORK_START_DATE "to_date(:WORK_START_DATE,'yyyy/mm/dd')",
FG_COMPLETION_DATE "to_date(:FG_COMPLETION_DATE,'yyyy/mm/dd')",
CURRENCY,
EXCHANGE_RATE "TO_NUMBER(:EXCHANGE_RATE)",
SHIP_PRICE "TO_NUMBER(:SHIP_PRICE)",
CREATED_BY,
CREATED_AT "to_date(:CREATED_AT,'yyyy/mm/dd')",
STATUS,
DELETED)

雖然說ORACLE有OGG,ODI,OSB,SOA 不過SQL LOADER這樣的小工具做ORACLE數據庫的導入還是非常的快速高效。
發佈了31 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章