我知道的有三種方法:\x0d\x0a1、如果數(shù)據(jù)量不大且沒有大對象(圖片,文件什么的)且使用pl/sql developer做oracle管理工具的話,可以直接復制粘貼,操作方法是先按照列的先后順序把EXCEL中數(shù)據(jù)排好,在第一個字段前面加一空白列(這部很重要,否則字段就會不對應了),pl/sql developer中執(zhí)行下select * from 表名 for update,使得你的表可以編輯,然后點一下像鎖一樣的那個圖標(鼠標放上去會顯示編輯數(shù)據(jù)四個字),復制excel中的數(shù)據(jù)(包括空白列),最后直接在表中空白行的地方粘貼就行了,操作很簡單。\x0d\x0a2、使用外部程序編程實現(xiàn),如c#,java,以c#為例,先將excel解析成datatable,然后逐行遍歷入庫即可。\x0d\x0a3、使用工具XlsToOra.exe,只要配置一下登陸進去后,設置一下導入的表名,列與excel中列的對應關系就可以導入了。\x0d\x0a4、可以將excel轉換成csv文件再利用文本導入器(工具-文本導入器)導入即可。\x0d\x0a以上是個人使用過的一些方法, 難免有不完美之處,歡迎指正探討^_^
潮安網(wǎng)站建設公司創(chuàng)新互聯(lián)公司,潮安網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為潮安1000多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的潮安做網(wǎng)站的公司定做!
1、 運行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中選擇Oracle Database Server,如果第一次使用會告之要求加載驅動程序ojdbc14.jar。
加載驅動程序之后,界面將變成如下的形式,在其中填寫Oracle數(shù)據(jù)庫的連接信息,按“Next”繼續(xù)。
2、 在Target Database中默認Database System為MySQL Server,在Connection Parameters中填寫相應的MySQL數(shù)據(jù)庫的連接信息,按“Next”繼續(xù)。
3、進行數(shù)據(jù)庫連接測試,測試通過后按“Next”到Source Schemata Selection,點選準備進行數(shù)據(jù)遷移的Schemata后按“Next”繼續(xù)。
4、在Object Type Selection,點Detailed selection按鈕,在下方左側列表中選擇不進行遷移的表,將其放入右側列表中,即左側列表剩余的表都將進行數(shù)據(jù)遷移。選擇好之后按“Next”繼續(xù)。
5、
在Object Mapping的Migration of type Oracle Schema,如果要設置參數(shù),點Set
Parameter按鈕。如果默認數(shù)據(jù)庫表為UTF8的話,則選擇Multilanguage;如果默認數(shù)據(jù)庫表為GBK的話,則需要選擇User
defined,并在下方填寫charset=gbk, collation=gbk_general_ci。Migration of type
Oracle Table中要設置參數(shù)點Set Parameter按鈕。如果默認數(shù)據(jù)庫表為UTF8的話,則選擇Data
consistency/multilanguage;如果默認數(shù)據(jù)庫表為GBK的話,則需要選擇User
defined,并在下方填寫addAutoincrement=yes, charset=gbk,
collation=gbk_general_ci, engine=INNODB。選擇好之后按“Next”繼續(xù)。
6、再到Manual
Editing,在這里可以修改建表腳本。由于Oracle與MySQL之間語法規(guī)則的差異,通常需要對腳本的數(shù)據(jù)類型以及默認值進行調(diào)整,比如
Oracle中通常會對Timestamp類型的數(shù)據(jù)設置默認值sysdate,但在MySQL中是不能識別的。在Filter中選擇Show All
Objects,然后在Migrated
Objects中選擇要修改腳本的表,再點擊左下方的Advanced就可以進行腳本編輯了。修改完之后點擊右側Apply
Changes按鈕保存,按“Next”繼續(xù)。
7、然后一路“Next”,如果沒有提示出錯的話,就可以將指定表中的數(shù)據(jù)導入MySQL了。如果有提示出錯信息,則需要返回到Manual Editing處對腳本重新進行修改。
需
要補充一點,在導大容量數(shù)據(jù)特別是CLOB數(shù)據(jù)時,可能會出現(xiàn)異常:“Packets larger than max_allowed_packet
are not
allowed”。這是由于MySQL數(shù)據(jù)庫有一個系統(tǒng)參數(shù)max_allowed_packet,其默認值為1048576(1M),可以通過如下語句
在數(shù)據(jù)庫中查詢其值:
show VARIABLES like '%max_allowed_packet%';
修改此參數(shù)的方法是在mysql文件夾找到my.ini文件,在my.ini文件[mysqld]中添加一行:
max_allowed_packet=16777216
重啟MySQL,這樣將可以導入不大于16M的數(shù)據(jù)了,當然這數(shù)值可以根據(jù)需要作調(diào)整。
用專用的SQL語句,或者用第三方工具。
方法一、使用SQL*Loader
這個是用的較多的方法,前提必須oracle數(shù)據(jù)中目的表已經(jīng)存在。大體步驟如下:
1、將excel文件另存為一個新文件比如文件名為text.txt,文件類型選文本文件(制表符分隔),這里選擇類型為csv(逗號分隔)也行,但是在寫后面的control.ctl時要將字段終止符改為','(fields
terminated
by
','),假設保存到c盤根目錄。
2
、如果沒有存在的表結構,則創(chuàng)建,假設表為test,有兩列為dm,ms。
3、用記事本創(chuàng)建SQL*Loader控制文件,網(wǎng)上說的文件名后綴為ctl,其實我自己發(fā)現(xiàn)就用txt后綴也行。比如命名為control.ctl,內(nèi)容如下:(--后面的為注釋,實際不需要)
load
data
--控制文件標識
infile
'c:\text.txt'
--要輸入的數(shù)據(jù)文件名為test.txt
append
into
table
test
--向表test中追加記錄
fields
terminated
by
X'09'
--字段終止于X'09',是一個制表符(TAB)
(dm,ms)
--定義列對應順序
備注:數(shù)據(jù)導入的方式上例中用的append,有以下幾種:insert,為缺省方式,在數(shù)據(jù)裝載開始時要求表為空;append,在表中追加新記錄;replace,刪除舊記錄,替換成新裝載的記錄;truncate,同replace。
4、在命令行提示符下使用SQL*Loader命令實現(xiàn)數(shù)據(jù)的輸入。
sqlldr
userid=system/manager
control='c:\control.ctl'
我給你一些數(shù)據(jù)庫常用的導入導出命令吧:\x0d\x0a該命令在“開始菜單運行CMD”中執(zhí)行\(zhòng)x0d\x0a一、數(shù)據(jù)導出(exp.exe)\x0d\x0a1、將數(shù)據(jù)庫orcl完全導出,用戶名system,密碼accp,導出到d:\daochu.dmp文件中\(zhòng)x0d\x0aexp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、將數(shù)據(jù)庫orcl中scott用戶的對象導出\x0d\x0aexp scott/accp@orcl file=d:\daochu.dmp owner=(scott)\x0d\x0a\x0d\x0a3、將數(shù)據(jù)庫orcl中的scott用戶的表emp、dept導出\x0d\x0aexp scott/accp@orcl file= d:\daochu.dmp tables=(emp,dept)\x0d\x0a\x0d\x0a4、將數(shù)據(jù)庫orcl中的表空間testSpace導出\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp tablespaces=(testSpace)\x0d\x0a\x0d\x0a二、數(shù)據(jù)導入(imp.exe)\x0d\x0a1、將d:\daochu.dmp 中的數(shù)據(jù)導入 orcl數(shù)據(jù)庫中。\x0d\x0aimp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、如果導入時,數(shù)據(jù)表已經(jīng)存在,將報錯,對該表不會進行導入;加上ignore=y即可,表示忽略現(xiàn)有表,在現(xiàn)有表上追加記錄。\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp full=y ignore=y\x0d\x0a\x0d\x0a3、將d:\daochu.dmp中的表emp導入\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp tables=(emp)
用sqlserver2000自帶的導入導出數(shù)據(jù)工具,將access表中的數(shù)據(jù)導入到oracle中去下面是我在一個人的博客中找到的注意事項,你可以看一看1.導入的時候access中的表名必須是大寫的,否則導進去之后,因為sqlplus運行到后臺的時候會把所有字符自動變?yōu)榇髮?而oracle大小寫敏感,所以生成的小寫表無法訪問,你用toad或DBARtsion也是白搭2.表中的字段名稱比如user之類的改進改名,很有可能就會因為這個卡掉,得重新導3.注意數(shù)據(jù)庫中的數(shù)據(jù),有可能會出現(xiàn)因為數(shù)據(jù)導致導入一半后卡住,出現(xiàn)這種問題的時候多半是因為備注轉化為的對象類型不對4.ACCESS中的備注問題,這個是個頭疼的問題,真tm頭疼,剛開始我用OLE DB方式連接數(shù)據(jù)庫,備注默認轉化的oracle數(shù)據(jù)類型為LONG,但是TNND每張oracle表中最多只有一個LONG類型的字段,(古怪的規(guī)定~!我找了半天沒找到原因),琢磨了半天后決定舍棄(當初選OLE DB是受頁面里面OLE DB連接比ODBC連接先進點的觀點影響。。),改用ODBC,這里連接數(shù)據(jù)庫的時候有幾種方法,我選的是用定義好的文件來連接,在生成文件的時候一定要注意,用戶名和密碼必須是大寫的,不然的時候你就等著哭吧,然后配連接好的,執(zhí)行導入,我第一遍的時候就相當成功,但是后來因為插錯數(shù)據(jù)和表格,又懶的刪只好刪掉用戶重新導,一模一樣的數(shù)據(jù),就是用戶名變了,nnd就報了n多錯誤,備注自動生成的方式是CLOB,我們ACCESS數(shù)據(jù)庫表中還有個OLE對象類型的,自動轉化為BLOB類型,在頁面上不能直接用通俗的方法獲取rs讀CLOB,要是這樣寫,一準報錯,這個問題一直沒解決。。從網(wǎng)上找了些資料,有種說將對象分割拿出來,但太麻煩了,能生成一個完整的結果集就不錯了。。還有迭代,我們哥倆商量了半天準備用VARCHAR2(2000)替代,結果頁面報錯。