mysql -u test -p xxxx -s -e "source load.sql"
load.sql 內包含大量 LOAD DATA 語句。
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n';
| 策略 | 適用場景 | 操作 |
|---|---|---|
| 預清空 | 全量覆蓋 | TRUNCATE TABLE 或 DELETE FROM |
| REPLACE | 主鍵衝突覆蓋 | LOAD DATA REPLACE ... |
| IGNORE | 主鍵衝突跳過 | LOAD DATA IGNORE ... |
.sql,Shell & 後台並行split -l 100000 按行切分,多進程導入同表(需配合 IGNORE 或臨時表合併)xargs -P 4 或 GNU Parallel 限制並行度,避免 IO/CPU 打滿
[mysqld]
innodb_buffer_pool_size = 6G
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
bulk_insert_buffer_size = 256M # MyISAM 專用
SELECT COUNT(*) vs 文件行數ANALYZE TABLEinnodb_flush_log_at_trx_commit = 1