首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 到 MySQL 遷移無代碼方案:DTS + PHPMyAdmin 可視化導入導出實戰

     編輯:MySQL 資料庫相關知識

利用 SQL Server DTS (Data Transformation Services) 導出文本文件,再通過 PHPMyAdmin 導入 MySQL,實現無編程異構遷移。

前置條件

  • 已安裝 SQL Server 客戶端工具 (Enterprise Manager / SSMS)
  • 已部署 PHPMyAdmin (Web 版 MySQL 管理介面)
  • 網絡互通:遷移機器可訪問 SQL Server 及 MySQL

第一階段:SQL Server DTS 導出文本

  1. 打開 Enterprise Manager → 數據轉換服務 → 新建包
  2. 連接配置:源選 Microsoft OLE DB Provider for SQL Server,目標選 Text File (Destination)
  3. 新建任務 → 轉換數據任務,分別指定源連接與目標連接
  4. 屬性定義:映射源表列 → 目標文本文件列 (分隔符、引號、編碼)
  5. 執行任務 → 成功 → 保存包
  6. 導出嚮導:選擇「從源數據庫複製表和視圖」 → 完成導出

輸出:每張表對應一個文本文件 (CSV/TSV),含列名首行。

第二階段:PHPMyAdmin 導入 MySQL

  1. 在 MySQL 中預建目標表結構 (可用 SHOW CREATE TABLE 從 SQL Server 獲取 DDL,調整類型後執行)
  2. PHPMyAdmin → 目標表 → 導入 → 選擇文本文件
  3. 格式設置:CSV、分隔符 ,、引號 "、編碼 utf-8、首行列名
  4. 執行導入 → 驗證行數

場景二:目標表已存在且列名不一致

  1. 建臨時表 (結構與導入文件一致) → 導入數據
  2. PHPMyAdmin → 臨時表 → 導出 → 「數據和結構」→ 獲得 INSERT SQL
  3. 文本編輯器批量替換:表名、列名映射至目標表
  4. 在目標表執行修正後的 SQL

常見問題與修復

問題原因修復
導入行數少於源文本文件編碼不匹配 / 分隔符衝突 / 引號未轉義統一 UTF-8、用制表符 TSV 避免逗號衝突、檢查雙引號轉義
日期時間格式錯誤SQL Server datetime 導出格式與 MySQL DATETIME 不兼容DTS 導出時指定格式 YYYY-MM-DD HH:MM:SS 或 SQL 轉換 CONVERT(VARCHAR, dt, 120)
大文本截斷PHPMyAdmin 上傳限制 / MySQL max_allowed_packet調整 upload_max_filesize/post_max_size/max_allowed_packet,或分片導入
主鍵衝突目標表已有數據 / 自增種子衝突TRUNCATE TABLE 清空 / ALTER TABLE ... AUTO_INCREMENT=1

大數據量優化:跳過 PHPMyAdmin 直連命令行


# 1. DTS 導出 CSV (或用 bcp.exe 高性能導出)
bcp "SELECT * FROM db.dbo.table" queryout table.csv -c -t, -T -S localhost

# 2. MySQL 命令行高速導入
mysql -uroot -p --local-infile=1 -e "
  LOAD DATA LOCAL INFILE 'table.csv'
  INTO TABLE db.table
  CHARACTER SET utf8mb4
  FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
  LINES TERMINATED BY '\n'
  IGNORE 1 LINES;
"

性能提升:LOAD DATA INFILE 比 INSERT 快 10-20 倍,繞過 SQL 解析層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved