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

MySQL 大量資料匯入:LOAD DATA 與 mysqlimport 實戰

     編輯:MySQL 資料庫相關知識

為什麼不建議用 INSERT 批量寫入?

逐筆 INSERT 需反覆解析、鎖表、刷日誌,效能極差。MySQL 提供兩種高效批量匯入工具:

1. LOAD DATA INFILE — SQL 層面批量載入

LOAD DATA LOCAL INFILE 'filename.txt' INTO TABLE table_name;
  • 讀取客戶端本地檔案(需 LOCAL 關鍵字)。
  • 檔案格式預設為 Tab 分隔、換行結尾,可用 FIELDS TERMINATED BY、LINES TERMINATED BY 自訂。
  • 支援 IGNORE n LINES 跳過標題行。

2. mysqlimport — 命令列工具封裝

mysqlimport --local -u root -p table_name filename.txt
  • 本質上自動生成 LOAD DATA 語句。
  • 依檔名自動對應表名(首個句點前字串),如 class.txt → class 表。
  • 常用參數:--fields-terminated-by=','、--ignore-lines=1、--compress 壓縮傳輸。

效能優化關鍵設定

場景建議
MyISAM 表匯入前 ALTER TABLE ... DISABLE KEYS,匯入後 ENABLE KEYS 重建索引,避免逐筆維護 B-Tree。
InnoDB 表按主鍵順序排序資料檔案,配合 innodb_flush_log_at_trx_commit=2、innodb_buffer_pool_size 加大。
超大檔案拆分多檔案平行匯入,或使用 LOAD DATA 配合 PARTITION 表分區並行。

安全性注意事項

  • LOCAL 選項涉及客戶端檔案讀取,MySQL 3.23.49+ 預設啟用,但可用 --local-infile=0 關閉。
  • 生產環境建議僅允許應用伺服器 IP 連接,避免任意檔案讀取風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved