方法一、使用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.txtappend into table test --向表test中追加記錄fields terminated by X09 --字段終止于X09,是一個制表符(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 datainfile e:test.csvreplace into table testfields 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.txtSQL*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";
新聞熱點
疑難解答