需求:單表資料從 SQL Server 遷移至 MySQL,不想安裝 ODBC/第三方工具。利用 SQL Server 內建「匯出資料」產生 CSV,再用 SQLyog/Workbench 導入 MySQL,零依賴、可視化、可控。
1.csv(副檔名必須 .csv,否則 MySQL 端無法識別)。匯出的 CSV 無欄位名稱列,MySQL 導入需第一行為標題。
1.csv → 第一行插入標題:"ncid","ncname","link"
(雙引號包裹、逗號分隔) → 存檔。
1.csv 的資料夾(如桌面 1/)。1_csv。| 坑點 | 後果 | 對策 |
|---|---|---|
| 副檔名非 .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)或雙寫方案。