萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> 資料庫綜合

MSSQL 資料庫遷移至 MySQL 完整指南:兩大核心方法詳解

MSSQL 遷移至 MySQL 的兩種主流方案

將 Microsoft SQL Server 資料庫遷移至 MySQL 是許多企業在技術棧調整或成本優化時會面臨的挑戰。本文將詳細介紹兩種成熟可靠的遷移方法,幫助您順利完成跨平台資料庫轉換。

方法一:手動匯出匯入法(適合中小型資料庫)

此方法核心在於「結構與資料分離處理」,透過標準工具實現最大兼容性。

步驟 1:匯出表結構

在 MSSQL 中使用「產生指令碼」功能,將目標資料表的 CREATE TABLE 陳述式匯出。關鍵在於依照 MySQL 語法手動調整:移除方括號 []、將 IDENTITY(1,1) 改為 AUTO_INCREMENT、DATETIME 對應 DATETIME 或 TIMESTAMP、NVARCHAR 改為 VARCHAR 並指定字元集(建議 utf8mb4)。

步驟 2:匯出資料檔案

使用 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:認證資訊

步驟 3:MySQL 端匯入資料

使用 mysqlimport 快速載入:

mysqlimport -u root -p databasename /path/to/tablename.txt

注意:文字檔檔名必須與目標資料表名稱完全一致(不含副檔名),且表結構必須已建立完成。

方法二:MySQL Migration Toolkit 圖形化遷移(適合複雜/大型資料庫)

官方提供的免費遷移工具,支援異構資料庫間的結構與資料同步。

環境準備

  1. 在執行 MSSQL 的機器上安裝 Migration Toolkit
  2. 安裝 Java Runtime Environment (JRE)
  3. 下載並配置 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 defined
  • 設定 charset=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()→需應用層生成 UUID
  • 儲存程序/觸發器:T-SQL 與 MySQL SQL 標準差異大,通常需人工重寫
  • 保留字衝突:MySQL 保留字(如 ORDER、GROUP)需用反引號 ` 包裹

遷移最佳實踐建議

  1. 先建立測試環境,完整跑一次遷移流程並驗證資料筆數、檢查碼
  2. 分批遷移:大表可先匯出結構與索引,再分批次匯入資料
  3. 保留回滾方案:遷移前完整備份 MSSQL,驗證無誤再切換應用
  4. 應用程式配置同步修改:連接字串、ORM 映射、連線池參數等

掌握這兩種方法,無論是小型專案手動遷移,還是企業級大型系統平台轉型,都能從容應對 MSSQL 到 MySQL 的資料庫遷移挑戰。

copyright © 萬盛學電腦網 all rights reserved