利用sqlldr將數據文件導入到數據庫


前段時間了解到了sqlldr這個功能,感覺很不錯就嘗試着搞一下。我也是通過查閱網上的資料了解並實驗的,如果有什么說的不對或者有需要補充的希望大牛們多多指點。

sqlldr的作用是將數據文件導入數據庫的表,只支持單個文件的導入。
不過應該可以使用循環或者數據文件合並來實現多個文件的導入。
利用sqlldr進行數據文件的導入只要兩步:
1.寫一個ctl格式的文件(用於說明接收表的一些信息)

參數說明:
load data -- 1. 控制文件標識

  參數說明:
  load data   --    1. 控制文件標識
  之后是對表的操作類型:
                insert:     默認值,在空表中插入記錄,如果表不為空則會報錯。    
                append:  在表中追加新記錄。                
                replace:替換,將舊的記錄去掉(用delete語句),添加上新的信息。
                truncate:替換,將舊的記錄去掉(用truncate語句),添加新的信息。
                FIELDS TERMINATED BY "":數據分隔符。
                TRAILING NULLCOLS:當數據文件對應字段是空值時,表中對應字段就以null插入。

2.寫入導入語句:

參數說明:
userid:數據庫的賬號密碼用戶串
control:控制文件,也就是第一步寫的的文件
log:日志文件,記錄執行信息。
bad:壞數據文件,出現錯誤的記錄會出現在該文件中
data:數據文件名字
parallel:不會鎖住加載表,可以同時讓多個sqlldr語句操作一個表導入數據,這樣不安全,一般用false。
direct:Direct導入可以跳過數據庫的相關邏輯(DIRECT=TRUE),而直接將數據導入到數據文件中,但是這樣可能會破快表的結構,一般用false。

另外還有一種情況就是導入部分列:假如數據文件有五列而表只需要一、三、四這三列的情況。
這種情況只需要對.ctl控制文件進行修改,我們可以把不需要的二、五兩列在控制文件中的字段設置為其他值,先附圖,取值說明隨后說。


其中的TCOL FILLER與TCOLS FILLER放在不需要導入數據庫表的列,我發現這個值不是隨便寫的,本人對取值也沒有深究,只是隨便試了試摸索了點規律。
這個值中的FILLER是固定的不可少的,不過前邊的TCOL是可以變的,不過盡量用字母,數字能不能用我沒有試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM