一、原則:
只遷移表結構和數據,存儲過程、函數、觸發器盡量自己改寫,並充分測試。
遷移前,先設置好數據庫的一些參數,比如默認存儲引擎,默認編碼等,方便后續導入。
二、方法:
1、使用MySQL Workbench
MySQL Workbench提供了Migration Wizard(數據庫遷移)功能,支持MSSQL的數據形式轉換為MYSQL下的數據格式;
具體參照這篇文章:http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/
如果有Not enough memory to allocate insert buffer of size 1073741824,請行Google解決。可能是MySQL端max_allowed_packet、key_buffer_size大小設置的問題。
博主的解決辦法是,在windows機器新建一個MySQL數據庫,作為中間導入庫。然后再在兩個MySQL庫間同步數據。
注意:
1)看日志文件wb.log的報錯,復制結果以這個日志為准。
2)source RMBMS 連接參數,Server填打開SSMS后,服務器屬性后面那個名稱(常規-名稱)。
2、使用Navicat Premium -- 本人推薦
Navicate 提供了數據傳輸的功能,可以作為中間操作節點,將一個數據庫復制到另一個庫。
操作簡單,常規界面選擇要同步的庫和表,高級界面去掉創建索引、勾上遇到錯誤繼續、其他基本默認即可。
完成后注意看日志,如果有報錯沒有復制數據,請重新同步一下這些表,並在高級里勾上使用完整插入語句,
這樣我們在日志里,可以看到SQL語句,手動執行插入和調試錯誤即可。有表沒同步,請手動建表。
三、后續操作:
1、手動改寫存儲過程、函數和觸發器,並要經過程序充分測試檢驗。
2、根據業務需求,添加合適的索引。
附:另外靠譜的兩種方法:https://www.percona.com/blog/2016/06/23/migrate-from-ms-sql-server-to-mysql/
