Oracle數據導入Mysql中

爲了生產庫釋放部分資源,須要將API模塊遷移到mysql中,及須要導數據。mysql

嘗試了oracle to mysql工具,遷移時報錯不說,這麼大的數據量,用這種簡陋的工具不大可靠。sql

意外發現平時用的數據庫視圖工具Navicat Premium中有數據遷移工具,意外的好用。這個工具自己支持mysql,oracle,sqlLite,PostgreSql數據庫,所以而也提供了在不一樣數據庫之間遷移數據的功能。數據庫

遷移以前,先確保你創建了這兩個數據庫的connection。選擇Tools/DataTransfer。oracle

\

選擇源數據庫,選擇你要遷的表,目標數據庫。
<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20141101/2014110109051329.png" alt="\">app

選擇周邊。工具

\

遷移過程,左上角爲進度。post

 

-----------------------------------------------------------------------------------------------------------------------
二.使用MySQL Migration Toolkit快速將Oracle數據導入MySQL
使用MySQL Migration Toolkit快速將Oracle數據導入MySQL
上來先說點廢話
本人最近在學習一些數據庫方面的知識,以前接觸過Oracle和MySQL,最近又很流行MongoDB非關係型數據庫,因此乾脆一塊兒研究一下,對比學習中找不一樣,首先說一下本人使用的數據庫版本和可視化工具
Oracle10G—PL/SQL Developer9
MySQL5.5.29—MySQL Workbench6.0
MongoDB2.4.9(32bit最大2G)—Robomongo0.8.4
爲了保持數據的一致,把現有Oracle中的一部分數據移植到MySQL中,百度以後發現MySQL Migration Toolkit不錯,現將步驟寫出跟你們分享
1、安裝MySQL Migration Toolkit
先到http://dev.mysql.com/downloads/gui-tools/5.0.html下載MySQL GUI Tools(其實就是一個MySQL管理工具),其中就包括MySQL Migration Toolkit工具,一路next安裝完畢
2、第一次運行須要加載ojdbc14.jar包

運行MySQL Migration Toolkit,一路「Next」到「Source Database」,在Database System中選擇Oracle Database Server,若是第一次使用會告之要求加載驅動程序ojdbc14.jar,而後從新啓動MySQL Migration Toolkit。學習

3、加載驅動程序以後,來到Source Database界面將變成以下的形式,在其中填寫Oracle數據庫的鏈接信息,按「Next」繼續。測試

4、在Target Database中默認Database System爲MySQL Server,在Connection Parameters中填寫相應的MySQL數據庫的鏈接信息,按「Next」繼續。

5、通過Connecting to Server測試經過後按「Next」,到Source Schemata Selection,點選準備進行數據遷移的數據庫後按「Next」繼續。

6、通過Reverse Engineering測試經過後按「Next」,在Object Type Selection,點Detailed selection按鈕,在下方左側列表中選擇不進行遷移的表,將其放入右側列表後,即左側列表剩餘的表都將進行數據遷移。選擇好以後按「Next」繼續。

7、在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」繼續。

8、通過Migration測試經過後,再到Manual Editing,在這裏能夠修改建表腳本。因爲Oracle與MySQL之間語法規則的差別,一般須要對腳本的數據類型以及默認值進行調整,好比Oracle中一般會對Timestamp類型的數據設置默認值sysdate,但在MySQL中是不能識別的。在Filter中選擇Show All Objects,而後在Migrated Objects中選擇要修改腳本的表,再點擊左下方的Advanced就能夠進行腳本編輯了。修改完以後點擊右側Apply Changes按鈕保存,按「Next」繼續。

9、在Object Creation Options中,選擇本地磁盤儲存數據表結構,按「Next」繼續。

10、通過Creating Objects建立全部表的結構完畢,表中並無數據,按「Next」繼續。

11、一路「next」來到Data Mapping Options,選擇本地磁盤儲存數據表中的數據,按「Next」繼續。

12、通過Bulk Data Transfer建立全部表中的數據完畢,按「Next」繼續。

十3、來到summary顯示這次數據轉換的信息,能夠保存成文件,按「Finish」完成。

須要補充一點,在導大容量數據特別是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的數據了,固然這數值能夠根據須要做調整。
十4、使用MySQL Workbench導入數據
點擊Data Import/Restore先導入一次表結構,再導入一次表數據,完成數據庫遷移
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三. 先把oracle表中的數據另存在excel表中,再把excel表中數據導入到mysql中

這裏要將oracle中表eventlogs的數據導入到mysql中。步驟以下:

    一、在PL/SQL中用select * 搜索到eventlogs表的全部數據,而後右鍵點擊"Copy to Excel";以下圖所示:

          

     二、將數據保存爲excel表,並重名;以下圖:

         

    三、打開mysql的可視化工具,我這裏是Navicat,選擇表,點擊導入嚮導;以下圖所示:

 

    四、選擇上圖中"導入類型"的"execel文件",而後點擊"下一步";以下圖所示:

        

    五、接下來會讓你選擇文件,選擇你已經保存的excel文件,並選擇「SQL Result」,以下圖所示:

 

    六、而後一直點下一步直至步驟6,填充目標欄位。第一個欄位通常是空的,根據你的須要填。我這裏填爲"_id",並設爲主鍵。以下圖所示:

   七、而後一直點擊下一步,最後一步點擊開始。會出現一個「sql result」的表,重命名爲你想要的表便可。如圖所示:

     數據已經導入了。其中表中數據類型若不合你的要求,你能夠再設計表。

 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四,手動導入Navicat
 
這多是最蠢最低效的辦法,但也是最靠譜的辦法。在以上3中方法都不適用的前提下,一張一張表本身在navicat for mysql裏建。或者,從oracle裏導出的.sql文件不能在navicat裏運行sql文件來導入,由於裏面有些字段屬性不適用於mysql,oracle與mysql語法和字段屬性仍是有區別的,因此要把建立表sql語句一一修改後,再在navicat裏運行來建立表。
 
轉載:http://blog.csdn.net/superit401/article/details/51547745
相關文章
相關標籤/搜索