方法一:LOAD DATA INFILE(SQL 級)
LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
關鍵選項
LOCAL:從客戶端讀取文件;無 LOCAL 則從伺服器端讀取(需 FILE 權限)
FIELDS TERMINATED BY ',':欄位分隔符
ENCLOSED BY '"':引用字符
LINES TERMINATED BY '\r\n':行結束符
IGNORE 1 LINES:跳過標題行
指定欄位映射
LOAD DATA LOCAL INFILE 'dump.txt'
INTO TABLE mytbl (col_b, col_c, col_a); -- 文件列順序 b,c,a 對應表列 a,b,c
方法二:mysqlimport(命令行工具,LOAD DATA 封裝)
mysqlimport -u root -p --local db_name dump.txt
對應選項對照
| LOAD DATA | mysqlimport |
FIELDS TERMINATED BY | --fields-terminated-by= |
ENCLOSED BY | --fields-enclosed-by= |
LINES TERMINATED BY | --lines-terminated-by= |
(col_list) | --columns=col_b,col_c,col_a |
特殊字符處理
- 預設轉義字符:
\(反斜線)
- 自訂轉義:
ESCAPED BY '\\\\' / --fields-escaped-by=\\\\
- 含引號數據:確保
ENCLOSED BY 與數據一致
效能建議
- 大量導入前:
SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0;
- 導入後:恢復檢查、提交事務
- 配合
LOAD DATA 並行導入多張表
- 文件預排序主鍵順序,減少頁分裂
- 上一篇文章: MySQL Sleep 連接過多問題排查與解決:wait_timeout 配置最佳實踐
- 下一篇文章: MySQL 數據導出全攻略:SELECT INTO OUTFILE、mysqldump、跨主機遷移實戰
Copyright ©
程式碼之家 All Rights Reserved