客户端工具导入百万行极慢,服务端 LOAD DATA INFILE 与 SELECT INTO OUTFILE 直读写文件系统,速度提升 10-100 倍。
LOAD DATA INFILE 'D:\\data\\top-1m.csv'
INTO TABLE `site`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES; -- 若有表头
关键参数说明:
FIELDS TERMINATED BY ',':字段分隔符OPTIONALLY ENCLOSED BY '"':字符串可选双引号包裹ESCAPED BY '"':双引号转义为双双引号(RFC 4180)LINES TERMINATED BY '\n':行结束符,Windows 生成文件常为 \r\nIGNORE 1 LINES:跳过表头行SELECT * FROM `site`
INTO OUTFILE 'D:\\data\\top-1m.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n';
secure_file_priv 变量限制允许路径(SHOW VARIABLES LIKE 'secure_file_priv';)NULL 禁用导入导出,需修改配置重启/var/lib/mysql-files/ 目录| 方式 | 100万行耗时 | 适用场景 |
|---|---|---|
| Navicat/DataGrip 导入 | 30-60 分钟 | 小表、临时调试 |
| LOAD DATA INFILE | 10-30 秒 | 生产大表、ETL、初始化 |
提示:CSV 编码必须与表字符集一致(如
utf8mb4),否则中文乱码。导入前用head -5 file.csv核对格式。