Oracle數(shù)據(jù)導(dǎo)入MySQL的快捷工具:MySQL Migration Toolkit
Oracle數(shù)據(jù)庫中的數(shù)據(jù)某些情況下需要導(dǎo)入到MySQL中,如何方便快捷地導(dǎo)入呢?使用MySQL GUI Tools中的MySQL Migration Toolkit就可以輕松搞定,該工具對CLOB、BLOB類型的數(shù)據(jù)也有非常好的支持。
以下是利用該工具將原有的Oracle數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到MySQL的過程。
1、 運行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中選擇Oracle Database Server,如果第一次使用會告之要求加載驅(qū)動程序ojdbc14.jar。
加載驅(qū)動程序之后,界面將變成如下的形式,在其中填寫Oracle數(shù)據(jù)庫的連接信息,按“Next”繼續(xù)。
2、 在Target Database中默認Database System為MySQL Server,在Connection Parameters中填寫相應(yīng)的MySQL數(shù)據(jù)庫的連接信息,按“Next”繼續(xù)。
3、進行數(shù)據(jù)庫連接測試,測試通過后按“Next”到Source Schemata Selection,點選準備進行數(shù)據(jù)遷移的Schemata后按“Next”繼續(xù)。
4、在Object Type Selection,點Detailed selection按鈕,在下方左側(cè)列表中選擇不進行遷移的表,將其放入右側(cè)列表中,即左側(cè)列表剩余的表都將進行數(shù)據(jù)遷移。選擇好之后按“Next”繼續(xù)。
#p#
5、在Object Mapping的Migration of type Oracle Schema,如果要設(shè)置參數(shù),點Set Parameter按鈕。如果默認數(shù)據(jù)庫表為UTF8的話,則選擇Multilanguage;如果默認數(shù)據(jù)庫表為GBK的話,則需要選擇User defined,并在下方填寫charset=gbk, collation=gbk_general_ci。Migration of type Oracle Table中要設(shè)置參數(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ù)設(shè)置默認值sysdate,但在MySQL中是不能識別的。在Filter中選擇Show All Objects,然后在Migrated Objects中選擇要修改腳本的表,再點擊左下方的Advanced就可以進行腳本編輯了。修改完之后點擊右側(cè)Apply Changes按鈕保存,按“Next”繼續(xù)。
7、然后一路“Next”,如果沒有提示出錯的話,就可以將指定表中的數(shù)據(jù)導(dǎo)入MySQL了。如果有提示出錯信息,則需要返回到Manual Editing處對腳本重新進行修改。
需要補充一點,在導(dǎo)大容量數(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,這樣將可以導(dǎo)入不大于16M的數(shù)據(jù)了,當然這數(shù)值可以根據(jù)需要作調(diào)整。
原文地址:http://blog.chinaunix.net/space.php?uid=12115233&do=blog&id=431601
【編輯推薦】