萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

CSV 檔案匯入 MySQL 完整操作指南

前置準備

  1. 編碼統一:CSV 檔案另存為 UTF-8(或 UTF-8 with BOM),資料庫/表字元集設為 utf8mb4。
  2. 建表對應:依 CSV 欄位建立表結構,日期/時間欄位在 Excel 中設為「日期」格式,避免匯入變字串。

核心命令:LOAD DATA INFILE

LOAD DATA INFILE 'data.csv'
INTO TABLE target_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  -- 跳過標題行

參數詳細說明

參數說明
LOW_PRIORITY延遲執行直到無讀取鎖
LOCAL客戶端讀取檔案並傳給 Server(需客戶端與 Server 都啟用 local-infile)
REPLACE / IGNORE主鍵/唯一鍵衝突時:替換 / 忽略
FIELDS TERMINATED BY欄位分隔符,CSV 用 ','
ENCLOSED BY欄位包圍字元,CSV 常用雙引號
ESCAPED BY跳脫字元,預設 \\
LINES TERMINATED BY行結束符,Windows '\r\n',Linux '\n'
IGNORE n LINES跳過前 n 行(標題)
(col1, col2, ...)指定匯入欄位順序,對應 CSV 欄位

權限要求

  • 執行用戶需 FILE 權限:GRANT FILE ON *.* TO 'user'@'host';
  • secure_file_priv 限制匯入目錄:
    SHOW VARIABLES LIKE 'secure_file_priv';
    若為 /var/lib/mysql-files/,需將 CSV 放入該目錄;若為空則無限制(不建議)。

常見問題排查

  • 資料截斷:欄位長度不足 → 擴大 VARCHAR 或用 TEXT。
  • 日期格式錯誤:CSV 日期格式需與 MySQL 兼容(YYYY-MM-DD HH:MM:SS),或匯入後用 STR_TO_DATE 清洗。
  • 中文亂碼:確認 CSV 編碼、CHARACTER SET 參數、表字元集三者一致。

替代方案

  • mysqlimport:LOAD DATA 的命令列封裝,適合批次腳本。
  • ETL 工具:DataX、Kettle、Airbyte 處理超大檔、異構源。
  • 程式語言:Python pandas.read_csv + to_sql / LOAD DATA LOCAL INFILE。
copyright © 萬盛學電腦網 all rights reserved