CSV (Comma-Separated Values) 是最通用的資料交換格式。MySQL LOAD DATA INFILE 可高效批次匯入,關鍵在於編碼一致、欄位對應、分隔符正確三要素。
,,若含逗號欄位需雙引號包裹。
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE target_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
IGNORE 1 LINES; -- 跳過標題行
| 參數 | 說明 | 常用值 |
|---|---|---|
LOW_PRIORITY | 延遲執行直到無讀取鎖 | 高併發讀庫時 |
LOCAL | 客戶端讀檔傳給 Server (需 local_infile=1) | 遠端匯入必加 |
REPLACE / IGNORE | 主鍵/唯一鍵衝突時覆蓋/忽略 | 視業務決定 |
FIELDS TERMINATED BY | 欄位分隔符 | ',' '\t' '|' |
ENCLOSED BY | 欄位包裹字元 | '"'" |
ESCAPED BY | 跳脫字元 | '\\' |
LINES TERMINATED BY | 換行符 | '\n' (Linux) '\r\n' (Windows) |
IGNORE n LINES | 跳過前 n 行 | 1 (標題行) |
(col1,col2,...) | 指定匯入欄位順序 | CSV 欄位順序不同時 |
# MySQL Server (my.cnf)
[mysqld]
local_infile=1
# Client 連線
mysql --local-infile=1 -uroot -p -h host db_name
CHARACTER SET 參數 = 表/欄位字符集 = 連線字符集。YYYY-MM-DD HH:MM:SS)。secure_file_priv 限制目錄,檔案需放在允許路徑 (查詢 SHOW VARIABLES LIKE 'secure_file_priv')。