今天老闆給了個看似容易的任務——把資料從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的連接配接後選中【函數】右鍵建立函數組:
然後右側為以下圖檔:
5 接着把剛才部落格裡的存儲過程貼過來,這邊要注意兩點
- 看清楚存儲過程,確定type_table_info這張表已經建好
- 在貼進去的代碼中建立這張表的代碼要去掉
最後應該是這樣
6 然後先儲存,再點運作即可執行
7 這邊又有個問題,第一次儲存完運作後報了下面這個錯:
ERROR:
ORA-: 非法的零長度辨別
網上找了很多是存儲過程中有雙引号,改成單引号就可以了。一如既往,網上大多數問題都不适用于小菜鳥。。。。。
偶然的機會Navicat突然崩掉了,重新開機之後再運作, 居然可以了。好吧,看來是要重新開機,原因未知。
8 那麼執行完以後就可以開始遷移了,選中連接配接後右鍵選中【資料傳輸】:
後:
源連接配接:選擇需要遷移出來資料的Oracle連接配接
模式:選擇該對應的Oracle使用者
目标連接配接:選擇mysql連接配接
資料庫:選擇在mysql中建好的對應遷移資料庫
然後,點開始即可。