mysqlimport 是 MySQL 官方提供的命令行批量導入工具,基於 LOAD DATA INFILE 實現,比 INSERT 快 10-20 倍,適合百萬級以上數據初始化。
mysqlimport [options] database_name textfile1 [textfile2 ...]
Customers.txt → 表 Customers)| 選項 | 短 | 功能 |
|---|---|---|
--delete | -d | 導入前清空表 |
--force | -f | 忽略錯誤繼續執行 |
--ignore | -i | 跳過唯一鍵衝突行(保留舊數據) |
--replace | -r | 唯一鍵衝突時替換舊行(用新數據) |
--lock-tables | -l | 導入前鎖表,防止併發讀寫干擾 |
--fields-terminated-by=, | 指定字段分隔符(默認 Tab) | |
--fields-enclosed-by=\" | 指定字段包裹字符(默認無) | |
--lines-terminated-by=\n | 指定行結束符(默認 \n) | |
--password | -p | 提示輸入密碼 |
--verbose | -v | 顯示詳細進度 |
文件 Orders.txt 內容:
"1", "ORD89876", "1 Dozen Roses", "19991226"
"2", "ORD89877", "2 Dozen Tulips", "19991227"
執行命令:
mysqlimport --password --replace --lock-tables \
--fields-enclosed-by=" --fields-terminated-by=, \
Meet_A_Geek Orders.txt
解析:
--replace 更新已有訂單;
--lock-tables 保證一致性;
雙引號包裹、逗號分隔完全匹配 CSV 格式。
\N 表示 NULLsplit -l 100000 big.txt part_)並行導入mysqlimport 是命令行封裝,適合腳本自動化、定時任務LOAD DATA INFILE 可在 SQL 會話中執行,支持更多選項(如 IGNORE n LINES 跳過表頭)