萬盛學電腦網

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

SQL Server 資料遷移至 MySQL 輕量方案:CSV 中轉法

需求:單表資料從 SQL Server 遷移至 MySQL,不想安裝 ODBC/第三方工具。利用 SQL Server 內建「匯出資料」產生 CSV,再用 SQLyog/Workbench 導入 MySQL,零依賴、可視化、可控。

步驟 1:SQL Server 匯出 CSV

  1. 企業管理器 → 右鍵目標表 → 所有任務 → 匯出資料。
  2. 資料來源:預設(本機 SQL Server)→ 下一步。
  3. 目的地:選 文字檔 → 瀏覽儲存路徑 → 檔名 1.csv(副檔名必須 .csv,否則 MySQL 端無法識別)。
  4. 選擇「從資料表複製」→ 選中目標表 → 下一步 → 完成。

步驟 2:補齊 CSV 表頭(關鍵)

匯出的 CSV 無欄位名稱列,MySQL 導入需第一行為標題。

  1. 企業管理器 → 右鍵表 →「設計表」→ 抄寫「欄位名稱、型別、長度」。
  2. 記事本開啟 1.csv → 第一行插入標題:
"ncid","ncname","link"

(雙引號包裹、逗號分隔) → 存檔。

步驟 3:MySQL 導入

  1. SQLyog → 右鍵目標資料庫 → Import → Import External Data Wizard。
  2. 資料來源類型選 CSV → 選擇含 1.csv 的資料夾(如桌面 1/)。
  3. 按精靈完成 → 產生表 1_csv。
  4. 重命名表、調整型別/長度/索引(SQLyog 「修改表」圖形化操作)。

避坑指南

坑點後果對策
副檔名非 .csv導入精靈識別失敗強制命名為 .csv
缺表頭行第一行資料被當標題,資料錯位手動插入標題行
編碼不一致中文亂碼匯出選 Unicode/UTF-8;導入指定 utf8mb4
大欄位截斷text/ntext 內容不全SQL Server 匯出勿限制長度;MySQL 目標欄位用 TEXT/BLOB
自增主鍵衝突導入報 Duplicate entry目標表主鍵設 AUTO_INCREMENT,CSV 不含主鍵欄

進階:大表分批遷移

-- SQL Server 分批匯出(每 10 萬行一檔)
SELECT * INTO #tmp FROM src_table WHERE id BETWEEN 1 AND 100000;
BCP #tmp OUT part1.csv -c -t, -T -S.

-- MySQL 端 LOAD DATA 並行導入
LOAD DATA INFILE 'part1.csv' INTO TABLE dst_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

CSV 中轉法無需額外驅動,適合單表、中小資料量、一次性遷移場景;長期同步請用 CDC(Debezium/Canal)或雙寫方案。

copyright © 萬盛學電腦網 all rights reserved