MySQL数据导入
大约 2 分钟
MySQL数据导入
因为无法使用 select OPERATION_UNIT,LINE_NAME,TOWER_NO,OP_TEAM_NAME,XS_USER,CHECKIN_TIME,PATROL_TYPE,PATROL_METHOD from xs_records_tem for update; for update 语句,导致excel和表字段位置不一致,无法导入
目前三种解决方案
- 第一种: 创建一个临时表,和excel的格式对上,直接导入
第二种; 通过Navicat 导入,可以新建表,或者用目标表,指定对应字段 【时间格式可能不对】


- 第三种,通过 mysqlimport 工具
具体步骤:
mysql -u 用户名 -p 数据库名
LOAD DATA LOCAL INFILE 'D:\\temp\\xs.csv' INTO TABLE xs_records_tem2 CHARACTER SET utf8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (OPERATION_UNIT, LINE_NAME, TOWER_NO, OP_TEAM_NAME, XS_USER, CHECKIN_TIME, PATROL_TYPE, PATROL_METHOD);
或者:
mysql -u 用户名 -p 数据库名 --local-infile=1 -e "LOAD DATA LOCAL INFILE 'D:\\temp\\xs.csv' INTO TABLE xs_records_tem2 CHARACTER SET utf8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (OPERATION_UNIT, LINE_NAME, TOWER_NO, OP_TEAM_NAME, XS_USER, CHECKIN_TIME, PATROL_TYPE, PATROL_METHOD)"
这里可能会报错 ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
这个错误表明 MySQL 服务器和客户端禁用了本地文件加载功能。要解决这个问题,你需要同时在客户端和服务器端启用
LOCAL INFILE功能。
这个错误表明 MySQL 服务器和客户端禁用了本地文件加载功能。要解决这个问题,你需要同时在客户端和服务器端启用 LOCAL INFILE 功能。
解决方案
- 临时解决方案(仅当前会话有效)
在 MySQL 客户端中先执行以下命令启用本地文件加载,然后再执行 LOAD DATA 命令:
SET GLOBAL local_infile = 1;
然后重新连接 MySQL 并使用 --local-infile 选项:
mysql --local-infile=1 -u 用户名 -p 数据库名
永久解决方案(修改配置文件)
找到 MySQL 的配置文件
my.ini或my.cnf:
- Windows 通常位于
C:\ProgramData\MySQL\MySQL Server 8.0\ - 或 MySQL 安装目录下
- 在
[mysqld]部分添加:
[mysqld]
local_infile=1
- 在
[client]部分添加:
[client]
loose-local-infile=1
- 重启 MySQL 服务:
net stop mysql80
net start mysql80
- 替代方法(使用 mysqlimport)
mysqlimport --local --ignore-lines=1 --fields-terminated-by=, --columns="OPERATION_UNIT,LINE_NAME,TOWER_NO,OP_TEAM_NAME,XS_USER,CHECKIN_TIME,PATROL_TYPE,PATROL_METHOD" -u 用户名 -p 数据库名 "D:\\temp\\xs.csv"
- 检查是否启用的方法
在 MySQL 中执行:
SHOW GLOBAL VARIABLES LIKE 'local_infile';