SQL Server 遷移至 MySQL 實戰:Navicat Premium 與專用工具方案
異構資料庫遷移包含結構轉換與資料搬移兩大環節。本文介紹兩種主流方案:GUI 工具 Navicat Premium 全圖形化操作,以及命令列專用工具適用自動化腳本。
方案一:Navicat Premium 圖形化遷移(適合中小型、一次性遷移)
前置作業
- 將來源 SQL Server 資料庫備份還原至本機實例(跨網路直接遷移易發生連線不穩、型別映射錯誤)。
- 在 MySQL 建立同名目標資料庫。
操作步驟
- 開啟 Navicat Premium,連線本機 MySQL,右鍵目標資料庫選「導入向導」。
- 資料來源選「ODBC」。
- 選擇「SQL Server」驅動程式,填入:
Data Source:SQL Server 實例名
Database:來源資料庫名
認證資訊
- 依嚮導依序:選擇目標表 → 欄位映射(重點檢查型別對應) → 條件篩選(可排除不需遷移資料) → 開始遷移。

已知限制
- Navicat 內建型別映射不完美(如
DATETIME→TIMESTAMP、NVARCHAR→VARCHAR 字元集處理)。
- 大量資料遷移速度受限於 ODBC 驅動效能。
方案二:專用工具組合(推薦生產環境、大資料量、自動化)
- 結構轉換:使用 mss2sql 或 SQL Server Migration Assistant (SSMA) for MySQL 將 SQL Server DDL 轉為 MySQL 相容 DDL,人工覆核修正後在目標庫執行建表。
- 資料遷移:再用 Navicat ODBC 導入資料,或用
bcp 導出 CSV → LOAD DATA INFILE 導入,速度更快。
替代開源工具:MySQL Migration Toolkit(舊版)
- 下載:
dev.mysql.com/downloads/gui-tools/5.0.html → Without installer 版。
- 需安裝 JRE 5+。
- 來源選 MS SQL Server,JDBC 連線字串:
jdbc:jtds:sqlserver://127.0.0.1;user=...;password=...;namedPipe=true。
- 目標填 MySQL 連線資訊,依嚮導完成。
遷移檢核清單
- [ ] 主鍵、自增、預設值、非空約束完整保留
- [ ] 索引、外鍵、觸發器、預存程序、檢視表手動重寫
- [ ] 字元集統一為
utf8mb4,校對規則 utf8mb4_general_ci 或 unicode_ci
- [ ]
DATETIME 精度、時區處理驗證
- [ ] 大物件(
IMAGE/VARBINARY(MAX))欄位對應 LONGBLOB
- [ ] 分頁查詢、動態 SQL、系統函數(
GETDATE()→NOW())應用層同步修正
- [ ] 全量資料筆數、抽樣內容比對
遷移非一次點擊完成,結構審核與資料驗證才是成功關鍵。建議先在測試環境全流程演練,再排程正式窗口執行。