MySQL批量导入数据最高效方式是LOAD DATA INFILE,需文件字段匹配、UTF-8无BOM编码、置于secure_file_priv目录;支持字段映射与错误处理,替代方案为mysqlimport命令。

MySQL批量导入数据最常用、最高效的方式是使用LOAD DATA INFILE语句,配合格式规范的文本文件(如CSV或TSV)。它比逐条INSERT快数十倍甚至上百倍,特别适合一次性导入万级、百万级数据。
准备结构匹配的文本文件
确保文件字段顺序、类型、分隔符与目标表完全一致。常见要求如下:
- 每行一条记录,字段间用逗号(或制表符)分隔,行末无多余空格
- 字符串字段建议用双引号包裹,避免含逗号或换行导致解析错误
- 日期用
YYYY-MM-DD格式,NULL值可写为\N或留空(需在SQL中指定SET col = NULLIF(@col, '')) - 文件保存为UTF-8无BOM编码,避免中文乱码
启用并执行LOAD DATA INFILE
该命令默认可能被禁用,需确认MySQL配置:
- 检查
secure_file_priv路径:SHOW VARIABLES LIKE 'secure_file_priv';,只能从该目录下读取文件 - 把数据文件(如
users.csv)放到该路径下,例如/var/lib/mysql-files/ - 执行导入(以逗号分隔、首行为字段名为例):
LOAD DATA INFILE '/var/lib/mysql-files/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
网趣网上购物系统支持PC电脑版+手机版+APP,数据一站式更新,支持微信支付与支付宝支付接口,是专业的网上商城系统,网趣商城系统支持淘宝数据包导入,实现与淘宝同步更新!支持上传图片水印设置、图片批量上传功能,同时支持订单二次编辑以及多级分类隐藏等实用功能,新版增加商品大图浏览与列表显示功能,使分类浏览更方便,支持最新的支付宝即时到帐接口。
处理常见问题与增强控制
遇到报错时,优先排查编码、路径权限和字段映射:
- 若提示“File not found”,检查文件是否真在
secure_file_priv目录,且MySQL进程有读取权限 - 若中文乱码,建表时用
CHARSET=utf8mb4,并在LOAD前执行SET NAMES utf8mb4; - 需跳过重复主键或唯一键冲突?加
ON DUPLICATE KEY UPDATE逻辑,但LOAD DATA本身不支持,可改用INSERT IGNORE配合脚本生成SQL,或先清空再导入 - 字段数不匹配?可用
SET子句做映射,例如SET created_at = STR_TO_DATE(@date_str, '%Y-%m-%d')
替代方案:mysqlimport命令行工具
它是LOAD DATA INFILE的封装,适合运维场景:
- 语法简洁:
mysqlimport --local --fields-terminated-by=',' --lines-terminated-by='\n' --ignore-lines=1 -u root -p db_name /path/to/users.csv - 自动匹配表名(文件名去掉扩展名即表名),支持并发导入多个文件
- 注意加
--local参数,并确保MySQL服务端启用了local_infile=ON









