前段時間了解到了sqlldr這個功能,感覺很不錯就嘗試着搞一下。我也是通過查閱網上的資料了解並實驗的。
sqlldr的作用是將數據文件導入數據庫的表,只支持單個文件的導入。
不過可以使用循環或者數據文件合並來實現多個文件的導入。
利用sqlldr進行數據文件的導入只要兩步:
1.寫一個ctl格式的文件(用於說明接收表的一些信息)
參數說明:
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。