Oracle提供的數據加載工具SQL*Loader能夠將外部文件中的數據加載到Oracle數據庫中,且支持多種數據類型(日期、字符、數據字符etc),能夠將多種數據類型加載到數據庫。導入數據準備:一個控制文件(.CTL) + 一個數據文件(.DAT)便可.sql
(1)控制文件:描述要加載的數據信息(數據文件名、數據存儲格式、文件中數據對應的存儲字段、數據加載方式、哪張表的哪列etc)數據庫
注:【根據數據存儲格式分類】app
a.固定格式存儲:數據按必定規律排序,擴展文件經過固定長度將數據分割;工具
b.自由格式存儲:由規定的分隔符來區分不一樣字段的數據.測試
(2)數據文件:存放目標數據的文件.net
一.SQLLDR命令形式日誌
>sqlldr排序
二.加載數據get
關鍵在於:編寫控制文件(決定要加載數據的格式)it
1.固定格式加載
數據按必定的規律排列,可以使用固定格式加載,控制文件經過數據的固定長度將數據分割.
a.建立一張表free_table,保存要加載的數據
導入以前沒有數據:
b.準備測試數據文件:free_data.dat
c.編寫控制文件:free_data.ctl,使用默認數據加載方式(適用於表數據爲空的狀況下,不然須要指定append或replace方式)
注:【固定格式控制文件】
infile:指定源數據文件
into 表名:數據將被添加到的表(可以使用append向表中追加數據,或replace覆蓋表中已有的數據)
position:指定表中字段對應數據的具體位置(一個英文符算1 一箇中文符算2)
d.使用sqlldr命令加載數據,設置控制文件名和導入產生的日誌信息文件
sqlldr 用戶名/密碼 control=控制文件位置 log=導入數據日誌文件位置
導入結果:
生成的導入日誌文件:
日誌內容:
2.自由格式加載數據
數據沒有必定的格式,可以使用自由格式加載,控制文件經過指定的分隔符將數據分割.
a.使用以前的表free_table,數據之間使用美圓符號($)分割數據,能夠看到字段的長度不固定
b.編寫控制文件:free_date2.ctl
b1.表不爲空,且不指定加載方式(默認方式),
會報以下錯誤:
SQL*Loader-601: 對於 INSERT 選項, 表必須爲空。表 FREE_TABLE 上出錯
b2.這時須要,更改成追加(append)方式加載數據:
注:【自由格式控制文件】
fields terminated by 指定分隔符 (表的字段列表)
c.使用sqlldr命令加載數據,設置控制文件名和導入產生的日誌信息文件
sqlldr 用戶名/密碼 control=控制文件位置 log=導入數據日誌文件位置
導入結果:
生成的導入日誌文件:
嗯~ 就是這麼簡單!感謝chen工。