有個項目一直是基於SQL Server開發的, 考慮到以后向外推廣和部署成本太高, 最終決定轉到MySQL上.
由於項目已經在公司Run了近一年時間, 當前遇到的最大問題就是數據遷移. 第一個想到的工具就是SQLYog, 因為操作簡單...
以下就用一張表為例子, 簡單記錄一下操作流程:
1.在目標數據庫上右鍵->Import->Import External Data...
2.默認Start a new job, 然后 下一步.
3.點擊 Create a New DSN 來創建一個SQL Server的DSN.
4.默認第一項然后 下一步:
5.將資料來源的類別: SQL Server, 再 下一步.
6.保存設定好的DNS文件, 稍後會用到.
7.填寫SQL Server(資料來源)服務器的IP地址或機器名. 下一步.
8.然后選擇第二項, 并輸入帳號和密碼.
9.選擇指定的源數據庫. 下一步.
10.保持默認選項(如需要變更為特定語言,請按實際情況設定), 點擊 完成.
11.選擇 File DSN 項, 并找到之前我們創建好的DNS文件. 接下來輸入帳號和密碼并 下一步.
12.設定目標數據庫(MySQL). 正確填寫 host address, Username, Password, Port 并選擇目標Database. 下一步.
13.默認選擇第一項, 下一步.
14.勾選需要遷移的表, 并設置 目標表名, 字段對照(Map), 高級(Advanced) 以及數據過濾(Where)
15.這里我們保持目標表名不變, 點擊 Map 欄的 "..." 進行設定.
注意: 如果源數據表中有 自增長 字段, 必須在此切換為int(建議用 bigint(20) ). 如果此自增長字段為非負數, 還可勾選Unsigned 項, 使字段最大長度翻倍, 以便保存更大的數值. (關於 Unsigned 項的詳細說明可查閱 MySQL 文檔)
16. 以上設定完成后, 勾選 Run immediately, 下一步.
17.等待數據導入直到完成.
至此, 我們已經完成了一張表的數據導入工作.
後記 : SQLYog導入數據量不大的表時速度還不錯, 接下來我再導入一張有近40萬(383863 rows)行數據并且包含Trigger的表, 最終耗時 927 秒. 略長了些. 並且Trigger也沒有同步被導入 (考慮到SQL Server和MySQL的語法差異, 估計導過來也不能用.).