回覆列表
-
1 # 使用者9147460208505
-
2 # a不會愛的小笨蛋
將Oracle資料匯入MySQL方法:先把oracle表中的資料另存在excel表中,再把excel表中資料匯入到mysql中。這裡要將oracle中表eventlogs的資料匯入到mysql中。步驟如下:
2、將資料儲存為excel表,並重名;如下圖:
5、接下來會讓你選擇檔案,選擇你已經儲存的excel檔案,並選擇“SQL Result”,如下圖所示:
1、 執行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中選擇Oracle Database Server,如果第一次使用會告之要求載入驅動程式ojdbc14.jar。
載入驅動程式之後,介面將變成如下的形式,在其中填寫Oracle資料庫的連線資訊,按“Next”繼續。
2、 在Target Database中預設Database System為MySQL Server,在Connection Parameters中填寫相應的MySQL資料庫的連線資訊,按“Next”繼續。
3、進行資料庫連線測試,測試通過後按“Next”到Source Schemata Selection,點選準備進行資料遷移的Schemata後按“Next”繼續。
5、在Object Mapping的Migration of type Oracle Schema,如果要設定引數,點Set Parameter按鈕。如果預設資料庫表為UTF8的話,則選擇Multilanguage;如果預設資料庫表為GBK的話,則需要選擇User defined,並在下方填寫charset=gbk, collation=gbk_general_ci。Migration of type Oracle Table中要設定引數點Set Parameter按鈕。如果預設資料庫表為UTF8的話,則選擇Data consistency/multilanguage;如果預設資料庫表為GBK的話,則需要選擇User defined,並在下方填寫addAutoincrement=yes, charset=gbk, collation=gbk_general_ci, engine=INNODB。選擇好之後按“Next”繼續。
6、再到Manual Editing,在這裡可以修改建表指令碼。由於Oracle與MySQL之間語法規則的差異,通常需要對指令碼的資料型別以及預設值進行調整,比如Oracle中通常會對Timestamp型別的資料設定預設值sysdate,但在MySQL中是不能識別的。在Filter中選擇Show All Objects,然後在Migrated Objects中選擇要修改指令碼的表,再點選左下方的Advanced就可以進行指令碼編輯了。修改完之後點選右側Apply Changes按鈕儲存,按“Next”繼續。
7、然後一路“Next”,如果沒有提示出錯的話,就可以將指定表中的資料匯入MySQL了。如果有提示出錯資訊,則需要返回到Manual Editing處對指令碼重新進行修改。
需要補充一點,在導大容量資料特別是CLOB資料時,可能會出現異常:“Packets larger than max_allowed_packet are not allowed”。這是由於MySQL資料庫有一個系統引數max_allowed_packet,其預設值為1048576(1M),可以透過如下語句在資料庫中查詢其值:
show VARIABLES like "%max_allowed_packet%";
修改此引數的方法是在mysql資料夾找到my.ini檔案,在my.ini檔案[mysqld]中新增一行:
max_allowed_packet=16777216
重啟MySQL,這樣將可以匯入不大於16M的資料了,當然這數值可以根據需要作調整。