Excel Data 導入oracle

 

Oracle導入excel數據方法彙總
摘要:在程序編制過程和數據彙總交換過程中,經常會碰到需要將其他人員在office辦公環境下編制的文件數據內容導入oracle中的情況。目前程序開發者經常使用的方法有如下幾種:1,使用oracle提供的導入工具sql*loader;2,使用plsql developer工具;3使用其他數據轉移工具做中轉站。下面我們採用實例的方式分別描述幾種導入方式的優缺點及其操作步驟。假設‘e:/test.xls’文件中存在三列數據分別代表客戶編號,客戶名稱和聯繫電話。其內容如下:
10001
zjaxi01
13562485246
10002
zjaxi02
13562485247
10003
zjaxi03
13562485248
10004
zjaxi04
13562485249
10005
zjaxi05
13562485250
10006
zjaxi06
13562485251
10007
zjaxi07
13562485252
10008
zjaxi08
13562485253
10009
zjaxi09
13562485254
10010
zjaxi10
13562485255
10011
zjaxi11
13562485256
10012
zjaxi12
13562485257
10013
zjaxi13
13562485258
10014
zjaxi14
13562485259
使用sql *loader
SQL*LOADER是oracle的數據加載工具,在NT下sql*loader的命令爲SQLLDR,在UNIX下一般爲SQLLDR/SQLLOAD。通常用來將操作系統文件遷移到oracle數據庫中。它是大型數據倉庫選擇使用的加載方法,因爲它提供了最快速的途徑(direct,parallel)。但這種方法要求存儲數據的oracle表是已經存在的。
使用這種方法導入excel內容到oracle時,首先需要將excel文件另存爲文本格式,文件類型選文本類型或者csv類型即將e:/test.xls另存爲e:/test.csv。
如果oracle沒有對應存儲數據的表結構,則需要創建表test(id,name,telphone)。
用記事本創建sql*loader控制文件test.ctl(ctl後綴是企圖證明這是一個控制文件,但實際上這個文件後綴不重要,用戶可以自由選擇,但文件格式一定要是文本格式),內容如下:
Load data
Infile ‘e:/test.csv’          --數據源文件名稱
Append|insert|replace       --append在表後追加,insert插入空表,replace替代原有內容
Into table test            --要導入的數據庫表名稱
[when id = id_memo]     --過濾條件
Fields terminated by X’09’ --字段分隔符
(id,name,telphone)        --字段名稱列表
最後在命令窗口輸入sqlldr命令行執行導入操作Sqlldr userid = system/manager control=’e:/test.ctl’
Sqlldr的函數關鍵字說明:
Userid   --oracle用戶名 userid = username/password
Control --控制文件名稱 control = ‘e:/insert.ctl’
Log     –-日誌文件名稱 log = ‘e:/insert.log’
Bad     --損壞文件名稱
Data     --data file name
Discard    --discard file name
Discardmax --number of discards to allow(默認全部)
Skip       --導入時跳過的記錄行數(默認0)
Load       --導入時導入的記錄行數(默認全部)
Errors    --允許錯誤的記錄行數(默認50)
使用plsql developer
PL/SQL Developer是一種專門用於開發、測試、調試和優化oracle PL/SQL存儲程序單元,比如觸發器,存儲過程,函數和程序包等集成開發環境。
在單個文件數據不多(小於10w行),並且目的表結構已經存在的情況下可以使用plsql developer工具將excel內容直接通過簡單的copy,paste操作導入oracle數據庫。具體操作方式如下:
l         在plsql developer的sql window裏輸入select * from test for update,其中test是要導入的oracle數據表名稱;
l         執行查詢(通過點擊按鈕或者快捷鍵F8可以實現);
l         點擊查詢結果上面的鎖狀按鈕,使得查詢到的內容處於編輯狀態。
l         從excel數據表中copy(ctrl +C)要導入oracle中的數據,如果是單列數據導入,可以先按plsql developer中查詢結果上面的“添加(+)”按鈕,使得數據表處於添加數據狀態,然後將鼠標在plsql developer的列名稱上單擊,最後使用快捷鍵ctrl + v 完成數據導入操作,並單擊plsql developer中的“提交(對號)”按鈕提交所做的修改。
l         如果是同時導入所有列,首先選擇copy所有數據,然後點增加(+)並點擊編輯那一行最前面的星號使得整行數據都處於被選擇狀態,最後paste即可將數據導入。
l         如果分列導入數據,則需要逐列完成,首先選擇copy要導入的數據,然後然後點增加(+)並點擊編輯那一列的名稱,使得整列數據都處於被選擇狀態,最後paste即可將數據導入。
使用PLSQL developer執行數據的導入和導出操作主要存在的問題是在大數據量情況下對中文數據可能出錯,估計將接收數據表的類型定義爲nvarchar2的類型會比較好一點。另外,就是這種方法需要人工更多的參與,不能達到自動導入的效果。
使用sql server中轉
    這部操作執行時,需要先用sqlserver的導入導出工具將excel內容導入sqlserver數據庫中,然後使用同樣的工具將sqlserver中轉內容導入oracle數據庫,這裏需要兩次的數據複製與IO操作,效率相對是比較低的。並且根據csdn網友jkflyfox的描述,這種方式下需要將oracle文件的名稱全部大寫,否則會出錯。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章