將 Microsoft SQL Server 資料庫遷移至 MySQL 是許多企業在技術棧調整或成本優化時會面臨的挑戰。本文將詳細介紹兩種成熟可靠的遷移方法,幫助您順利完成跨平台資料庫轉換。
此方法核心在於「結構與資料分離處理」,透過標準工具實現最大兼容性。
在 MSSQL 中使用「產生指令碼」功能,將目標資料表的 CREATE TABLE 陳述式匯出。關鍵在於依照 MySQL 語法手動調整:移除方括號 []、將 IDENTITY(1,1) 改為 AUTO_INCREMENT、DATETIME 對應 DATETIME 或 TIMESTAMP、NVARCHAR 改為 VARCHAR 並指定字元集(建議 utf8mb4)。
使用 MSSQL 原生 bcp 工具匯出純文字資料檔:
bcp "SELECT * FROM dbname.dbo.tablename;" queryout tablename.txt -c -S localhost\SQL2005 -U sa -P password
-c:字元模式,欄位以 Tab (\t) 分隔,列以換行 (\n) 分隔-S:指定伺服器實例名稱-U/-P:認證資訊使用 mysqlimport 快速載入:
mysqlimport -u root -p databasename /path/to/tablename.txt
注意:文字檔檔名必須與目標資料表名稱完全一致(不含副檔名),且表結構必須已建立完成。
官方提供的免費遷移工具,支援異構資料庫間的結構與資料同步。
mysql-connector-java JDBC 驅動,設定環境變數 CLASSPATH若資料庫包含中文,必須顯式指定字元集,否則會出現亂碼:
來源資料庫 (MSSQL) JDBC 連接字串:
jdbc:jtds:sqlserver://IP:PORT/DB_NAME;user=USER;password=PASS;charset=gbk;domain=
目標資料庫 (MySQL) JDBC 連接字串:
jdbc:mysql://IP:3306/?user=USER&password=PASS&useServerPrepStmts=false&characterEncoding=gbk
物件對應階段設定:
Migration of type MSSQL Table → Set Parameter → User definedcharset=gbk, collation=gbk_chinese_ci使用 MySQL Workbench、SQLyog 或命令列連線,先執行 SET NAMES gbk; 再查詢資料,確認中文顯示正常。
MONEY→DECIMAL(19,4)、UNIQUEIDENTIFIER→CHAR(36)、BIT→TINYINT(1)GETDATE()→CURRENT_TIMESTAMP、NEWID()→需應用層生成 UUIDORDER、GROUP)需用反引號 ` 包裹掌握這兩種方法,無論是小型專案手動遷移,還是企業級大型系統平台轉型,都能從容應對 MSSQL 到 MySQL 的資料庫遷移挑戰。