快速將excel數據保存到Oracle數據庫中【轉】


 

     我們在工作中,也許會碰到以下情況,客戶或者同事發來需要調查的數據,並不是dmp文件,而是excel文件,此時通常是一張表,少量幾條記錄.最近我恰好碰到了這種情況,所以做了些調查,不敢藏私,拿出來跟大家分享下. 一般的做法,只能對着excel拼寫sql語句.如果列數少還好說,表的列數一多的話,這方法既費時又費力.有什么辦法可以快捷地導入數據呢?以下的方案可以供大家參考:

 

Sql*Loader

 

操作步驟如下:

  1. 錄入excel測試表格,test.xls。
  2. 另存為.csv格式
  3. 創建sql*loader控制文件test.ctl,內容如下:
    Load data
    Infile 'c:\test.csv'
    insert Into table test Fields terminated by ','(column1,column2,column3,column4,column5)    
    需要將數據文件拷貝到對應位置
  4. 到數據庫中建立對應的測試表test
    create table test (
    column1 Varchar2(10),
    column2 Varchar2(10),
    column3 Varchar2(10),
    column4 Varchar2(10),
    column5 Varchar2(10)
    )
  5. 執行導入命令
    Sqlldr userid = system/manager control='C:\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)

ctl文件內容說明:
Load data
Infile 'e:\test.csv'  --數據源文件名稱
Append|insert|replace --append在表后追加insert插入空表replace替代原有內容
Into table test      --要導入的數據庫表名稱
[when id = id_memo]    --過濾條件
Fields terminated by',' --字段分隔符
(id,name,telphone)    --字段名稱列表

說明:

     這種方法的好處是sql*loader是oracle自帶軟件,無需安裝額外的軟件.缺點是操作比較麻煩點,而且如果表列數很多的話,輸入字段名稱列表會比較麻煩,適合導入大量數據.

 

PL Sql Developer  方法一

 

  1. 打開excel給需要拷貝的數據增加一個空的起始列 , 選中所要更新的數據, ctr+c   
  2. 打開PL SQl Developer
    1. 輸入select * from tab_name for update,按F8運行
    2. 打開鎖,此時記錄集處於可以編輯的狀態,
    3. 點擊選中整行, ctrl+v,commit,大功告成

 

說明:這種方法其實是利用PL/SQL developer 對於記錄集可以進行整行和多行復制粘貼的特性,toad似乎沒有這樣快速的辦法;

  • 在excel表格的列新追加空列的原因是在PL/SQL Developer選中整行進行粘貼時,前面會有個列數的列,所以要新增加一列,否則會造成列的錯位.
  • 這種方法處理少量數據的時候最合適,快捷方便,但是: excel的列必須與表中的列完全匹配

 

PL Sql Developer  方法二

 

  使用PL SQL Developerd的text importer,這種方法簡單方便,推薦此種方法

 

方法很簡單:

  1. 點擊tools->text importer
  2. 在Data from txtfile 頁面選擇要導入的文件,在Data to Oracle 界面選擇要導入的庫和表即可
  3. 此時可以看到導入結果預覽,還可以查看生成的sql語句,並且對於列可以智能匹配,妙用多多.當然點擊Import 就OK了

 

說明:

    這種方法簡單可靠,適合導入大量的數據,我猜測這個工具其實是后台根據excel的列生成了相應的sql語句,取代人工拼寫sql語句的過程,呵呵,就算生成的sql語句因為一些原因,不是很正確,也可以手工修改.這樣既自動又可以手動加以控制,我比較推薦這種方法. 

  前提是要安裝PL/Sql Developer,呵呵

 

綜述:

 

    我這篇文章主要介紹了兩種工具用於將excel導入oracle,如果在客戶的服務器上等環境受限的情況,沒有PL/Sql Developer的話,使用Sql*Loader是個不錯的選擇;PL/SQL Developer的兩種使用方法可以靈活使用,前者快速方便,后者可控性更好,而且無需字段匹配.


免責聲明!

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



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