首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CSV 數據高效導入 MySQL:LOAD DATA INFILE 實戰與 RFC4180 格式對齊指南

     編輯:MySQL 資料庫相關知識

MySQL LOAD DATA INFILE 直接讀 CSV 進引擎,速度比腳本解析快 **10-50倍**。關鍵在於精確對齊 FIELDS TERMINATED BY、ENCLOSED BY、LINES TERMINATED BY 三大參數與 RFC4180 標準。本文提供標準導入/導出模板與格式陷阱避坑指南。

標準導入命令模板


LOAD DATA INFILE '/tmp/file.csv' 
INTO TABLE `target_table`
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n';

關鍵參數與 RFC4180 對照表

參數RFC4180 標準MySQL 寫法說明
字段分隔符逗號 ,FIELDS TERMINATED BY ','必須一致
引用字符半角雙引號 "ENCLOSED BY '"'"字符串必須被雙引號包圍
引用內雙引號轉義兩個雙引號 ""MySQL 自動識別 ENCLOSED BY 時
行終止符\r\n (CRLF)LINES TERMINATED BY '\r\n'Linux產生可能為 \n,需對應
首行表頭可選IGNORE 1 LINES跳過表頭

RFC4180 核心規則速覽

  1. 字段間以逗號分隔,行間用 \r\n 分隔
  2. 字符串字段**必須**用半角雙引號包圍
  3. 字符串內的雙引號用**兩個雙引號**表示(如 "He said ""Hi""")
  4. 非字符串字段(數字、日期)建議也加引號,統一格式
  5. 文件編碼推薦 UTF-8 (無 BOM)

導出 CSV 模板(對齊導入格式)


SELECT * FROM `source_table`
INTO OUTFILE '/tmp/data.csv'
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\'
LINES TERMINATED BY '\n';

關鍵差異:導出用 OPTIONALLY ENCLOSED BY(僅字符串加引號),導入用 ENCLOSED BY(強制所有字段按引號解析)。**導入導出參數必須互為逆操作**。

實戰避坑指南

坑點現象解決
行終止符不匹配導入後所有數據擠在第一行,或最後一列含 \r用 file / hexdump -C 檢查文件換行符,調整 LINES TERMINATED BY
引用字符不匹配字段被截斷、溢出到下一字段確認 CSV 是否嚴格 RFC4180,必要時預處理:sed 's/^/"\n/; s/$/"/'
編碼不匹配中文亂碼導出導入雙端指定 CHARACTER SET utf8mb4,文件存 UTF-8 無 BOM
secure_file_priv 限制ERROR 1290: The MySQL server is running with the --secure-file-priv option文件放在 SHOW VARIABLES LIKE 'secure_file_priv'; 目錄下,或關閉該選項(需重啟)
大文件導入慢單事務、索引維護導入前 SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0;,分文件並行

進階:CSV 含表頭、欄位順序不同、需轉換


LOAD DATA INFILE '/tmp/source.csv'
INTO TABLE `target_table`
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col_csv_3, col_csv_1, @date_str, col_csv_5)
SET 
  target_col_a = col_csv_3,
  target_col_b = col_csv_1,
  target_col_c = STR_TO_DATE(@date_str, '%Y-%m-%d'),
  target_col_d = col_csv_5;

掌握 LOAD DATA INFILE 參數與 RFC4180 對齊,讓 CSV 導入從「反復試錯」變為「一次成功」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved