逐筆 INSERT 需反覆解析、鎖表、刷日誌,效能極差。MySQL 提供兩種高效批量匯入工具:
LOAD DATA LOCAL INFILE 'filename.txt' INTO TABLE table_name;
LOCAL 關鍵字)。FIELDS TERMINATED BY、LINES TERMINATED BY 自訂。IGNORE n LINES 跳過標題行。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 關閉。