天天看點

用Navicat完成Oracle資料導入MySQL

今天老闆給了個看似容易的任務——把資料從Oracle轉到MySQL,我那個激動啊,想着都是一家出的産品應該很簡單吧,plsql應該就能直接轉吧,然而一如往常,上司的任務從來都不會簡單。。。。(不會加表情大家自行腦補)

那麼正文開始:

工具:Navicat 11.2.7 + Oracle 11g + MySQL 5.7

步驟:

1 確定Oracle和MySQL 的服務開啟狀态

2 打開Navicat建立兩個庫的連接配接

3 這次轉庫遇到的主要問題是Oracle的date類型轉到MySQL裡是timestamp,但是兩個類型的精度有差,date7位,timestamp6位。是以在此得要先運作一段存儲過程,請參考以下部落格:将資料庫中所有的表中含DATE類型的字段改為TIMESTAMP類型

4 打開Oracle的連接配接後選中【函數】右鍵建立函數組:

用Navicat完成Oracle資料導入MySQL

然後右側為以下圖檔:

用Navicat完成Oracle資料導入MySQL

5 接着把剛才部落格裡的存儲過程貼過來,這邊要注意兩點

- 看清楚存儲過程,確定type_table_info這張表已經建好

- 在貼進去的代碼中建立這張表的代碼要去掉

最後應該是這樣

用Navicat完成Oracle資料導入MySQL

6 然後先儲存,再點運作即可執行

7 這邊又有個問題,第一次儲存完運作後報了下面這個錯:

ERROR:
ORA-: 非法的零長度辨別
           

網上找了很多是存儲過程中有雙引号,改成單引号就可以了。一如既往,網上大多數問題都不适用于小菜鳥。。。。。

偶然的機會Navicat突然崩掉了,重新開機之後再運作, 居然可以了。好吧,看來是要重新開機,原因未知。

8 那麼執行完以後就可以開始遷移了,選中連接配接後右鍵選中【資料傳輸】:

用Navicat完成Oracle資料導入MySQL

後:

用Navicat完成Oracle資料導入MySQL

源連接配接:選擇需要遷移出來資料的Oracle連接配接

模式:選擇該對應的Oracle使用者

目标連接配接:選擇mysql連接配接

資料庫:選擇在mysql中建好的對應遷移資料庫

然後,點開始即可。