命令列導入法(繞過 GUI 限制)
LOAD DATA LOCAL INFILE 'C:\\Users\\zl\\Desktop\\zhishu.csv'
INTO TABLE `dbname`.`tablename`
CHARACTER SET gbk
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n'
( `id`, `name`, `description`, `parent_id` );
參數詳解
CHARACTER SET gbk:CSV 多為 Excel 導出的 GBK 編碼,若資料庫為 UTF-8 需指定來源編碼。
FIELDS TERMINATED BY ',':欄位分隔符。
OPTIONALLY ENCLOSED BY '"':欄位可選雙引號包裹。
ESCAPED BY '"':雙引號跳脫字元。
LINES TERMINATED BY '\r\n':Windows 換行符。
- 括號內列出目標欄位順序,必須與 CSV 欄位一一對應。
中文亂碼根因與修正
| 現象 | 原因 | 解決 |
| 導入後中文變亂碼 | CSV 編碼與資料庫/連線編碼不一致 | 記事本「另存為」選 UTF-8,或指定 CHARACTER SET gbk/utf8 |
| SQLyog 導入無反應 | GUI 解析 CSV 格式失敗(引號、換行、編碼) | 改用 LOAD DATA 命令列,可控性最高 |
最佳實踐流程
- 用 Excel 開啟 CSV → 另存為 UTF-8 編碼。
- 確認欄位順序、分隔符、引號包裹方式。
- 在 MySQL 客戶端(命令列/Workbench)執行
LOAD DATA LOCAL INFILE。
- 驗證匯入筆數
SELECT COUNT(*) FROM tablename;。