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

MySQL LOAD DATA 高效導入大量資料實戰

     編輯:MySQL 資料庫相關知識

LOAD DATA INFILE:比 INSERT 快 10 倍的批量導入利器

基本語法


LOAD DATA [LOCAL] INFILE 'file_path' INTO TABLE tbl_name
[(col1, col2, ...)]
[FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\']
[LINES TERMINATED BY '\n']
[IGNORE number LINES];

兩種執行模式

模式命令適用場景
SQL 模式LOAD DATA LOCAL INFILE ...客戶端與服務端同機/信任網絡
命令行模式mysql --local-infile=1 -e "LOAD DATA ..."編譯安裝未啟用 --enable-local-infile 時

關鍵參數詳解

  • LOCAL:文件在客戶端,MySQL 透過協議傳輸;無 LOCAL 則文件須在服務端
  • REPLACE / IGNORE:主鍵/唯一鍵衝突時,替換或忽略
  • LOW_PRIORITY:等待無讀鎖時才寫入
  • FIELDS TERMINATED BY:欄位分隔符(預設 \t)
  • ENCLOSED BY:引用字符(如 CSV 雙引號)
  • ESCAPED BY:轉義字符(預設 \)
  • LINES TERMINATED BY:行結束符(預設 \n)
  • IGNORE n LINES:跳過前 n 行(如 CSV 標題行)

指定導入欄位(欄位不匹配時必用)


LOAD DATA INFILE '/home/Order.txt' INTO TABLE Orders
(Order_Number, Order_Date, Customer_ID);

實測效能

  • 300 萬條資料,LOAD DATA 耗時 **~3 分鐘**
  • 同等資料 INSERT 耗時 **30+ 分鐘**
  • 建議:導入前 SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; 導入後恢復

常見錯誤


ERROR 1148 (42000): The used command is not allowed with this MySQL version
-- 解決:啟用 --local-infile=1 或重新編譯加 --enable-local-infile
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved