MySQL数据导入

lishihuan大约 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的格式对上,直接导入
image-20250725170333821
image-20250725170333821
  • 第二种; 通过Navicat 导入,可以新建表,或者用目标表,指定对应字段 【时间格式可能不对

image-20250725094222196
image-20250725094222196
  • 第三种,通过 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 功能。

解决方案

  1. 临时解决方案(仅当前会话有效)

在 MySQL 客户端中先执行以下命令启用本地文件加载,然后再执行 LOAD DATA 命令:

SET GLOBAL local_infile = 1;

然后重新连接 MySQL 并使用 --local-infile 选项:

mysql --local-infile=1 -u 用户名 -p 数据库名
  1. 永久解决方案(修改配置文件)

  2. 找到 MySQL 的配置文件 my.inimy.cnf

  • Windows 通常位于 C:\ProgramData\MySQL\MySQL Server 8.0\
  • 或 MySQL 安装目录下
  1. [mysqld] 部分添加:
[mysqld]
local_infile=1
  1. [client] 部分添加:
[client]
loose-local-infile=1
  1. 重启 MySQL 服务:
net stop mysql80
net start mysql80
  1. 替代方法(使用 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"
  1. 检查是否启用的方法

在 MySQL 中执行:

SHOW GLOBAL VARIABLES LIKE 'local_infile';