Navicat for MySQL 內建強大的數據導入功能,支援 .xls、.xlsx、.csv、.txt、.json、.xml、.html、.db 等格式。但實際使用中,Excel 工作表名稱包含中文會導致**所有 Sheet 無法識別**,進而無法導入。本文記錄該問題現象、根因與最佳實踐。
Navicat 內部解析 Excel 時,對工作表名稱編碼處理存在缺陷。遇到非 ASCII 字元(中文、日文、韓文等)時,解析器異常終止,導致整個工作簿的 Sheet 列表讀取失敗。
| 錯誤示例 | 正確示例 | |
|---|---|---|
| 銷售數據 | sales_data | |
| 2024年報表 | report_2024 | |
| 用戶明細 | user_detail | |
| Sheet1 (預設) | data / main / raw |
| 模式 | 行為 | 適用場景 |
|---|---|---|
| Append (添加) | 純插入,主鍵衝突報錯 | 全新數據導入 |
| Update (更新) | 按主鍵匹配更新現有行 | 增量數據同步 |
| Append or Update | 主鍵存在則更新,不存在則插入 | 全量同步(推薦) |
| Delete (刪除) | 按主鍵匹配刪除目標表行 | 數據清洗 |
| Copy (復制) | 清空目標表後重新導入 | 全量覆蓋重建 |
# Excel 另存為 CSV (UTF-8)
# MySQL 導入
mysql -u root -p --local-infile=1 -e "
LOAD DATA LOCAL INFILE '/path/data.csv'
INTO TABLE target_table
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
"
適合自動化腳本、超大文件、無 GUI 環境場景。
養成「Sheet 名純英文」習慣,能避開 Navicat 導入 90% 的編碼坑,讓數據遷移順暢無阻。