Excel匯入oracle的幾種方法

來源:互聯網
上載者:User

方法一、使用SQL*Loader
這個是用的較多的方法,前提必須oracle資料中目的表已經存在。大體步驟如下:
1、將excel檔案另存新檔一個新檔案比如檔案名稱為text.txt,檔案類型選文字檔(定位字元分隔),這裡選擇類型為csv(逗號分隔)也行,但是在寫後面的control.ctl時要將欄位結束字元改為','(fields terminated by ','),假設儲存到c盤根目錄。

2 、如果沒有存在的表結構,則建立,假設表為test,有兩列為dm,ms。

3、用記事本建立SQL*Loader控制檔案,網上說的檔案名稱尾碼為ctl,其實我自己發現就用txt尾碼也行。比如命名為control.ctl,內容如下:(--後面的為注釋,實際不需要)
  load data                   --控制檔案標識
  infile 'c:\text.txt'        --要輸入的資料檔案名為test.txt
  append into table test      --向表test中追加記錄
  fields terminated by X'09'  --欄位終止於X'09',是一個定位字元(TAB)
  (dm,ms)                     --定義列對應順序

備忘:資料匯入的方式上例中用的append,有以下幾種:insert,為預設方式,在資料裝載開始時要求表為空白;append,在表中追加新記錄;replace,刪除舊記錄,替換成新裝載的記錄;truncate,同replace。

4、在命令列提示符下使用SQL*Loader命令實現資料的輸入。
sqlldr userid=system/manager control='c:\control.ctl'

我來舉個例子
1.匯出地區表的test.csv檔案
"01","市區"
"02","柯橋"
"03","錢清"
"04","皋埠"
"05","漓渚"
"06","齊賢"
"08","袍江"
"09","平水"
"12","東浦"
....
2.編輯sqlldr匯出控制檔案test.ctl內容如下:
load data
infile 'e:\test.csv'
replace into table test
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(id,name)
3.在cmd中執行:
E:\>sqlldr userid=xxx/yyy@dbxx control=e:\test.ctl log=e:\log.txt bad=e:\bad.txt
SQL*Loader: Release 8.1.7.0.0 - Production on 星期三 7月 20 21:28:06 2005
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
達到提交點,邏輯記錄計數48

方法二、利用PLSQL Developer
使用PLSQL Developer工具,這個可是大名鼎鼎的Oracle DBA最常使用的工具。
在單個檔案不大的情況下(少於100000行),並且目的表結構已經存在的情況下——對於excel而言肯定不會超過了,因為excel檔案的最大行為65536—— 可以全選資料COPY ,然後用PLSQL Developer工具。
  1 在PLSQL Developer的sql window裡輸入select * from test for update;
  2 按F8執行
  3 開啟鎖, 再按一下加號. 滑鼠點到第一列的列頭,使全列成選中狀態,然後粘貼,最後COMMIT提交即可。
還有很多第三方工具,Toad,PL/SQL Developer,SQL Navigator等等。

方法三 、使用其它資料轉移工具作中轉站。
我使用的是Sql Server 2000。
先將excel表匯入sqlserver資料庫中,然後再從Sql server匯入到oracle中。這兩部操作都簡單,如果不會隨便查個協助就可以了。

這裡有兩個自己的經驗:
一、是注意excel檔案的版本和格式要與匯入到sql server時的資料來源匹配。如果匯入到sql server時的資料來源選Microsoft Excel 97-2000的話,而excel檔案的版本為Micaosoft Excel 5.0/95 活頁簿,則有可能出問題。關於如何看Excle檔案格式,你開啟excel檔案,選擇另存新檔,即可看到像Micaosoft Excel 5.0/95 活頁簿或者是Microsoft Office Excle 活頁簿等等其它的檔案類型。

二、就是由Sqlserver匯入到oracle中時,記得將在oracle中的表名全部用大寫。因為oracle的表名都是大寫的,而sql的表可能是大小混寫的,所以匯入後在oracle裡查不到該表,比如這個Products表在oracle裡查詢就應該寫成select * from scott."Products";

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.