前言
跨資料庫平台的數據遷移是 DBA 與開發人員常遇到的任務。本文介紹一種完全圖形化、無需編寫任何程式碼的方法:利用 SQL Server 內建的 DTS (Data Transformation Services) 導出文字檔,再透過 phpMyAdmin 導入 MySQL。適合中小型數據量、結構相對簡單的遷移場景。
前置準備
- 已安裝 SQL Server 企業管理器(或 Management Studio)
- 已安裝並配置好 MySQL 及 phpMyAdmin
- 確保網路連通,能分別連線到來源 SQL Server 與目標 MySQL
步驟一:建立 DTS 封裝導出文字檔
- 打開 SQL Server 企業管理器,展開「數據轉換服務」,右鍵選擇「新建封裝」。
- 在 DTS 設計器中,點選工具列的「連接」圖示,新增「Microsoft OLE DB Provider for SQL Server」作為資料來源,輸入伺服器、認證方式、預設資料庫。
- 再次新增連接,選擇「Text File (Destination)」作為目的地,指定輸出檔案路徑與檔名(如
export_data.txt),格式選「分隔符號」,列分隔符建議用 Tab 或逗號,文字限定符雙引號。
- 建立「轉換數據任務」,將滑鼠從來源連接拖曳到目的地連接。雙擊任務進入屬性,逐一定義「來源」、「目的地」、「轉換」頁籤:勾選要導出的資料表、對應欄位、必要時做資料類型轉換。
- 點擊工具列「執行」圖示(或右鍵封裝選「執行」),等待提示成功。儲存封裝以便後續複用。
步驟二:在 MySQL 建立目標資料表
登入 phpMyAdmin,在目標資料庫下執行 CREATE TABLE 語句,確保欄位名稱、型別、長度與來源表一致。若原表有主鍵、索引、自增屬性,同步建立。
步驟三:phpMyAdmin 導入文字檔
- 在 phpMyAdmin 選中目標資料表,點擊「匯入」標籤。
- 選擇剛才導出的文字檔,格式選「CSV」或「CSV using LOAD DATA」。
- 關鍵設定:
- 欄位分隔符:與導出時一致(如 Tab 需填
\t)
- 欄位包圍字元:雙引號
"
- 跳過前 N 行:若檔案含標題行,設為 1
- 欄位名稱:若檔案無標題,需手動輸入欄位順序
- 點擊「執行」,觀察導入筆數與錯誤訊息。
進階場景:目標表結構不同時的處理
若目標表欄位名稱/順序不同,或已存在數據不可截斷:
- 先建立一張臨時表,結構與導入檔案完全一致,導入數據。
- 在 phpMyAdmin 對臨時表執行「匯出」→ 選擇「資料和結構」→ 產生
INSERT 語句的 SQL 檔。
- 用文字編輯器開啟 SQL 檔,利用「取代」功能批量修改表名、欄位名。
- 在目標表執行修改後的 SQL,完成數據合併。
常見問題排查
- 編碼亂碼:確保導出檔案編碼(通常 ANSI/UTF-8)與 phpMyAdmin 導入時選擇的字元集一致。
- 日期格式錯誤:SQL Server 導出的日期格式可能不被 MySQL 識別,可在 DTS 轉換階段用
CONVERT(VARCHAR, date_col, 120) 統一為 YYYY-MM-DD HH:MM:SS。
- 大數據量效能:超過百萬筆建議改用
bcp + LOAD DATA INFILE 命令列模式,或使用專業 ETL 工具(如 Kettle、Talend)。
結語
「零程式碼」不代表「零技術含量」。熟練掌握 DTS 導出細節與 phpMyAdmin 導入參數,能讓你在無開發環境、無權限安裝額外工具的受限環境下,快速完成異構資料庫遷移。遷移前務必做好數據校驗(筆數、抽樣對比),遷移後保留導出檔案作為回滾依據。