首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

MSSQL 遷移至 MySQL 完整指南:BCP 匯出與 Migration Toolkit 兩大方案

     編輯:關於SqlServer

將 SQL Server 資料庫遷移至 MySQL,主要面臨結構轉換、數據匯出入、字元集處理三大挑戰。本文提供兩種主流方案完整操作步驟。

方案一:BCP 匯出文字檔 + mysqlimport 匯入(適合大數據量、簡單結構)

步驟 1:匯出表結構

使用 SSMS 或腳本產生 CREATE TABLE 陳述式,手動調整語法差異(如 IDENTITY → AUTO_INCREMENT、NVARCHAR → VARCHAR、移除方括號 []、預設值語法調整),在 MySQL 執行建立表結構。

步驟 2:MSSQL 端使用 BCP 匯出數據

bcp "SELECT * FROM DBName.dbo.TableName" queryout TableName.txt ^
-c -T -S localhost\SQL2005
  • -c:字元模式,欄位以 Tab 分隔,列以換行分隔。
  • -T:信任連線(Windows 驗證),或用 -U sa -P password。
  • -S:指定伺服器\實例名。

步驟 3:MySQL 端使用 mysqlimport 匯入

mysqlimport -u root -p DatabaseName /path/to/TableName.txt
  • 檔名必須與目標表名相同(不含副檔名)。
  • 若欄位順序不同,需建立格式檔或先調整目標表結構。

方案二:MySQL Migration Toolkit 圖形化遷移(支援異構遷移、結構轉換)

前置需求: 安裝 Java JRE、MySQL JDBC Driver (Connector/J)、SQL Server JDBC Driver (jTDS)。

關鍵配置步驟

  1. 來源資料庫 (Source): 選擇 MS SQL Server,點選 Advanced,輸入 JDBC 連線字串:
    jdbc:jtds:sqlserver://IP:1433/DBName;user=USER;password=PASS;charset=gb2312
  2. 目標資料庫 (Target): 選擇 MySQL,點選 Advanced,輸入:
    jdbc:mysql://IP:3306/?user=USER&password=PASS&useServerPrepStmts=false&characterEncoding=gbk
  3. 物件對應: 修改 "Migration of type MSSQL Table" → "User defined",設定 charset=gb2312, collation=gb2312_chinese_ci。
  4. 手動修正: 在 "Manual Editing" 階段修正自動轉換錯誤的語法/型別。
  5. 驗證: 遷移完成後,MySQL 客戶端執行 SET NAMES gbk; 確認中文正常。

常見坑點與對策

問題原因解決
中文亂碼字元集不匹配來源/目標 JDBC 字串均指定 charset=gb2312/gbk;MySQL 端 SET NAMES gbk
自增欄位遺失IDENTITY 不轉 AUTO_INCREMENT手動修正結構腳本或 Toolkit 映射規則
日期時間型別錯誤DATETIME vs TIMESTAMP對應修正為 DATETIME
大數據量匯入極慢mysqlimport 預設逐行提交使用 LOAD DATA INFILE 並關閉索引/外鍵檢查

建議策略

  • 小型專案/單次遷移:Migration Toolkit 視覺化操作、支援結構轉換,優先考慮。
  • 大數據量/自動化腳本:BCP + LOAD DATA INFILE 效能最佳,適合納入 CI/CD 流程。
  • 異構同步/持續複寫:考慮 CDC 工具(如 Debezium, Canal)或雲端 DTS 服務。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved