Oracle數據導入Mysql中


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

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

意外發現平時用的數據庫視圖工具Navicat Premium中有數據遷移工具,意外的好用。這個工具本身支持mysql,oracle,sqlLite,PostgreSql數據庫,因此而也提供了在不同數據庫之間遷移數據的功能。

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

\

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

選擇周邊。

\

遷移過程,左上角為進度。

 

-----------------------------------------------------------------------------------------------------------------------
二.使用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不錯,現將步驟寫出跟大家分享
一、安裝MySQL Migration Toolkit
先到http://dev.mysql.com/downloads/gui-tools/5.0.html下載MySQL GUI Tools(其實就是一個MySQL管理工具),其中就包括MySQL Migration Toolkit工具,一路next安裝完畢
二、第一次運行需要加載ojdbc14.jar包

運行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中選擇Oracle Database Server,如果第一次使用會告之要求加載驅動程序ojdbc14.jar,然后重新啟動MySQL Migration Toolkit。

三、加載驅動程序之后,來到Source Database界面將變成如下的形式,在其中填寫Oracle數據庫的連接信息,按“Next”繼續。

四、在Target Database中默認Database System為MySQL Server,在Connection Parameters中填寫相應的MySQL數據庫的連接信息,按“Next”繼續。

五、經過Connecting to Server測試通過后按“Next”,到Source Schemata Selection,點選准備進行數據遷移的數據庫后按“Next”繼續。

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

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

八、經過Migration測試通過后,再到Manual Editing,在這里可以修改建表腳本。由於Oracle與MySQL之間語法規則的差異,通常需要對腳本的數據類型以及默認值進行調整,比如Oracle中通常會對Timestamp類型的數據設置默認值sysdate,但在MySQL中是不能識別的。在Filter中選擇Show All Objects,然后在Migrated Objects中選擇要修改腳本的表,再點擊左下方的Advanced就可以進行腳本編輯了。修改完之后點擊右側Apply Changes按鈕保存,按“Next”繼續。

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

十、經過Creating Objects創建所有表的結構完畢,表中並沒有數據,按“Next”繼續。

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

十二、經過Bulk Data Transfer創建所有表中的數據完畢,按“Next”繼續。

十三、來到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的數據了,當然這數值可以根據需要作調整。
十四、使用MySQL Workbench導入數據
點擊Data Import/Restore先導入一次表結構,再導入一次表數據,完成數據庫遷移
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三. 先把oracle表中的數據另存在excel表中,再把excel表中數據導入到mysql中

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

    1、在PL/SQL中用select * 搜索到eventlogs表的所有數據,然后右鍵點擊"Copy to Excel";如下圖所示:

          

     2、將數據保存為excel表,並重名;如下圖:

         

    3、打開mysql的可視化工具,我這里是Navicat,選擇表,點擊導入向導;如下圖所示:

 

    4、選擇上圖中"導入類型"的"execel文件",然后點擊"下一步";如下圖所示:

        

    5、接下來會讓你選擇文件,選擇你已經保存的excel文件,並選擇“SQL Result”,如下圖所示:

 

    6、然后一直點下一步直至步驟6,填充目標欄位。第一個欄位一般是空的,根據你的需要填。我這里填為"_id",並設為主鍵。如下圖所示:

   7、然后一直點擊下一步,最后一步點擊開始。會出現一個“sql result”的表,重命名為你想要的表即可。如圖所示:

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

 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四,手動導入Navicat
 
這可能是最蠢最低效的辦法,但也是最靠譜的辦法。在以上3中方法都不適用的前提下,一張一張表自己在navicat for mysql里建。或者,從oracle里導出的.sql文件不能在navicat里運行sql文件來導入,因為里面有些字段屬性不適用於mysql,oracle與mysql語法和字段屬性還是有區別的,所以要把創建表sql語句一一修改后,再在navicat里運行來創建表。
 
轉載:http://blog.csdn.net/superit401/article/details/51547745


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM