導出階段:Access → 文本文件
- Access → 右鍵表 → **匯出** → 文本文件
- 關鍵設置:
- **字段分隔符**:逗號
, 或製表符 \t (避免數據中含分隔符)
- **文本限定符**:雙引號
" (包裹含分隔符/換行的字段)
- **編碼**:UTF-8 (Access 2007+ 支援),舊版導出 ANSI 再
iconv -f GBK -t UTF-8
- **每行一記錄**:檢查無換行符穿透,必要時手工/腳本清洗
- 另存為
c:\samp_table.txt
導入階段:MySQL LOAD DATA INFILE
方法一:mysqlimport 命令行 (推薦大文件)
mysqlimport -u root -p \
--fields-terminated-by=',' \
--fields-enclosed-by='"' \
--fields-escaped-by='\\' \
--lines-terminated-by='\r\n' \
--local \
dbname samp_table.txt
--local:客戶端讀取文件並發送給服務端,**無需服務端 FILE 權限、文件可在客戶端機器**
- 文件名 **必須與表名一致** (
samp_table.txt → 表 samp_table)
方法二:SQL 語句 (靈活控制)
LOAD DATA LOCAL INFILE 'c:/samp_table.txt'
INTO TABLE samp_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES; -- 跳過標題行
方法三:phpMyAdmin 圖形界面 (小文件、可視化)
- 表 → 導入 → 選擇文件 → 格式 CSV → 設置分隔符/引號/轉義/編碼 → 執行
參數詳細說明
| 參數 | 含義 | 常用值 | 注意 |
FIELDS TERMINATED BY | 列分隔符 | ','、'\t'、'|' | 單字符,不可為空 |
FIELDS ENCLOSED BY | 列包裹符 | '"'" | 可選,建議加上 |
FIELDS ESCAPED BY | 轉義符 | '\\\\' (實際為反斜杠) | 處理包裹符/分隔符/換行 |
LINES TERMINATED BY | 行終止符 | '\r\n' (Win)、'\n' (Linux) | 可多字符 |
IGNORE n LINES | 跳過前 n 行 | 1 (標題行) | |
CHARACTER SET | 文件編碼 | utf8mb4 | 必須與文件實際編碼一致 |
常見失敗場景與修復
| 現象 | 原因 | 修復 |
| Row import failed / Column count doesn't match | 分隔符衝突、引號未閉合、換行穿透 | 檢查文件樣本;改用製表符分隔;啟用 ENCLOSED BY |
| Incorrect string value / 亂碼 | 文件編碼與 CHARACTER SET 不符 | file -bi samp_table.txt 確認編碼;統一 UTF-8 |
| Duplicate entry for key 'PRIMARY' | 數據含重複主鍵、或表已有數據 | REPLACE/IGNORE 關鍵字;或清空表再導 |
| ERROR 1290: The MySQL server is running with the --secure-file-priv option | 服務端禁用 LOCAL INFILE / 限制目錄 | 客戶端加 --local-infile=1;服務端 local_infile=ON;文件放入 secure_file_priv 目錄 |
| 大文件導入慢/超時 | 單線程、自動提交、索引維護開銷 | 導入前 SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; SET autocommit=0; 導入後恢複;或分割文件並行導入 |
進階技巧
- 虛擬列轉換:
LOAD DATA ... SET created_at = STR_TO_DATE(@var, '%m/%d/%Y')
- 分區表並行導入:按分區拆分文件,多會話並行
LOAD DATA
- CDC 同步**:Access 無 Binlog,僅支援全量/定時增量 (對比時間戳/觸發器)
結語
LOAD DATA INFILE 是 MySQL **最高吞吐** 的導入方式 (可達 100MB/s+),但對 **分隔符、引號、轉義、編碼、行終止符** 極度敏感。**標準化導出格式 (UTF-8、CSV RFC4180、製表符分隔) + 參數精準匹配 + 關閉檢查加速** 是穩定大規模導入的鐵律。小文件用 phpMyAdmin 可視化,大文件必用命令行 + 並行優化。