1. 程式人生 > >用Navicat完成Oracle資料匯入MySQL

用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的連線後選中【函式】右鍵新建函式組:

這裡寫圖片描述

然後右側為以下圖片:
這裡寫圖片描述

5 接著把剛才部落格裡的儲存過程貼過來,這邊要注意兩點
- 看清楚儲存過程,確保type_table_info這張表已經建好
- 在貼進去的程式碼中建立這張表的程式碼要去掉

最後應該是這樣
這裡寫圖片描述

6 然後先儲存,再點執行即可執行
7 這邊又有個問題,第一次儲存完執行後報了下面這個錯:

ERROR:
ORA-01741: 非法的零長度標識

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

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

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

這裡寫圖片描述

後:
這裡寫圖片描述

源連線:選擇需要遷移出來資料的Oracle連線
模式:選擇該對應的Oracle使用者

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

然後,點開始即可。