MySQL 內建匯出入工具回顧
SELECT ... INTO OUTFILE 'file':Server 端寫檔,需 FILE 權限,路徑受 secure_file_priv 限制。
mysqldump:邏輯備份,支援結構/資料/條件過濾,跨版本遷移首選。
mysqlimport / LOAD DATA INFILE:高效批量載入,需檔案在 Server 端或 LOCAL 關鍵字。
- 直接複製資料目錄:僅限 MyISAM、同架構、停機窗口。
Access → 文字檔 → MySQL 標準流程
- Access 匯出文字檔:
- 檔案 → 匯出 → 文字檔,選擇「分隔符號」:欄位分隔
,,文字限定符 "。
- **關鍵檢查**:打開匯出檔,確認**每筆資料佔單一行**,無換行符殘留;若有,手工或腳本清理。
- MySQL 匯入:
# 方式一:mysqlimport(客戶端工具)
mysqlimport -u root -p --fields-terminated-by=',' \
--fields-enclosed-by='"' --local db_name tbl_name.txt
# 方式二:LOAD DATA INFILE(SQL 語句,效能更強)
LOAD DATA LOCAL INFILE 'C:/export/tbl_name.txt'
INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'; -- Windows 換行
LOAD DATA 核心參數速查
| 參數 | 說明 | 預設 |
FIELDS TERMINATED BY | 欄位分隔符 | \t (Tab) |
FIELDS ENCLOSED BY | 文字包裹字元 | 無 |
FIELDS ESCAPED BY | 跳脫字元 | \\ |
LINES TERMINATED BY | 行結束符 | \n |
IGNORE n LINES | 跳過前 n 行(如標題列) | 0 |
大資料量優化技巧
- 匯入前
SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; SET AUTOCOMMIT=0;,匯入後恢復並 COMMIT;。
- 目標表無索引 → 匯入完畢再建索引,速度提升 10 倍以上。
- 分批次匯入(每批 1-5 萬行),避免單一事務過大導致回滾段膨脹。
驗證與事後清理
SELECT COUNT(*) FROM tbl_name; -- 對比 Access 筆數
CHECK TABLE tbl_name; -- 檢查完整性
ANALYZE TABLE tbl_name; -- 更新統計資訊