將數據導入 oracle 的方法應該不少 , 對於不一樣需求有不一樣的導入方式 , 最近使用oracle的sqlldr命令 導入數據庫數據感受是個挺不錯的技術點 。 使用sqlldr命令 將文本文件導入 oracle中大體須要兩步 :sql
第一步:編寫ctl控制文件數據庫
Load data --裝載數據(第二步中會具體講一下數據文件的來源位置)oracle
CHARACTERSET 'UFT8' --導入字符集格式
Append --這個屬性意思是在數據庫中原來數據基礎上追加本身的數據,不改變原來的數據,有興趣的還能夠了解其餘屬性replace等
into table int_demo_student_b --插入數據庫所對應得表
fields terminated by X'1B' --分隔符,用於分割數據文件中對應屬性數據的分割符號 我用的是ESC鍵分割 ,還有 X'09' 等於逗號分割
TRAILING NULLCOLS --空列賦值,若是不加這個屬性,當數據文件中有空值時,就會跳過空值,這樣導入的數據就出現錯位了,因此加了這個屬性就能夠避免空值錯位
(
stu_id, --字段,字段的順序和數據庫的順序一致
stu_name,
stu_class,
stu_age,
stu_sex,
stu_subject,
comment char(260), --截位操做,在作導入的時候,ctl導入屬於文件流導入,當字段字符長度超過255位就會導入失敗,若是這樣就須要加這個屬性來約束就不會導入失敗了
import_flag constant "0", --默認賦值,若是原來數據文件中沒有的字段,而本身須要在本身數據庫表中增長某個字段,就須要添加默認值constant
err_msg constant " "
)日誌
第二步:使用cmd命令窗口中輸入命令sqlldr命令運行 最後按下回車鍵blog
-> sqlldr userid = 用戶名 / 密碼 @ 數據庫名 data=數據文件地址 control = ctl控制文件地址 bad = D:/ bad.bad 錯誤日誌 log =D:/log.log 日誌記錄cmd
還能夠在命令中輸入rows deirect silent errors等屬性來限制導入的行數等其餘條件,有興趣的能夠本身瞭解下table
目前地址數據都是固定的,在實際應用通常都會經過定義變量來使用,這樣能夠重複使用。class