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

MySQL 秒級導入 CSV:LOAD DATA INFILE 完整參數模板

     編輯:MySQL 資料庫相關知識

標準範本

LOAD DATA INFILE 'D:\\test\\haha.csv'
REPLACE INTO TABLE `myTable`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n';

參數解析

子句說明常見值
REPLACE / IGNORE主鍵/唯一鍵衝突時:REPLACE 覆蓋、IGNORE 跳過視業務而定
FIELDS TERMINATED BY欄位分隔符',' (CSV)、'\t' (TSV)、'|'
OPTIONALLY ENCLOSED BY欄位包裹字元(僅包裹含分隔符/換行的欄位)'"'"、'\''
ESCAPED BY轉義字元'\\' (預設)、'' (禁用)
LINES TERMINATED BY行結束符'\r\n' (Windows)、'\n' (Linux/Mac)
IGNORE n LINES跳過前 n 行(如標題行)IGNORE 1 LINES
(col1, col2, ...)指定目標欄位順序/子集CSV 欄序與表不同時必填

進階用法

-- 僅導入指定欄位,並轉換日期格式
LOAD DATA INFILE '/data/order.csv'
INTO TABLE orders
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(order_no, @raw_date, amount, status)
SET order_date = STR_TO_DATE(@raw_date, '%Y-%m-%d %H:%i:%s');

-- 從標準輸入導入 (管道/腳本)
cat data.csv | mysql -uroot -p -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE t ..."

權限與安全

  • 需 FILE 權限(極高危,僅授信任帳號)。
  • LOCAL 關鍵字:檔案在客戶端,經網路傳輸至伺服器,需客戶端與伺服器均啟用 local_infile=1。
  • 安全路徑限制:secure_file_priv 目錄外檔案無法讀寫(MySQL 5.6+ 預設啟用)。

效能貼士

  1. 導入前 SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0;,導入後恢復並 COMMIT。
  2. 大檔案分批(如 10 萬行/批)避免長事務鎖定。
  3. 目標表無索引時最快;有索引則按塊寫入、合併排序。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved