MySql导入
文件目录
show variables like 'secure_file_priv';

如果值为NULL,需要先去打开,在my.conf中增加secure_file_priv="",然后必须重启数据库
打开导入配置
-
检查服务器状态
首先,确认服务器端的
local_infile全局变量当前是否已开启。在 MySQL 命令行中执行:SHOW GLOBAL VARIABLES LIKE 'local_infile';如果查询结果显示
Value为OFF,则说明服务器禁止了该功能 -
开启服务器功能
在 MySQL 命令行中执行以下命令,动态开启该功能(需要管理员权限,如
root用户):SET GLOBAL local_infile = 1;这个设置会在 MySQL 服务重启前一直有效
-
重新连接后重试
完成上述设置后,请退出当前 MySQL 连接,然后再次使用
./mysql -uroot -p --local-infile=1重新登录。之后再次尝试执行您的LOAD DATA LOCAL INFILE命令,应该就可以成功了 -
永久生效配置(可选)
通过
SET GLOBAL命令修改的设置只在当前 MySQL 服务运行期间有效。如果服务器重启,该设置会恢复默认值(通常是OFF)。如果您希望此设置永久生效,需要修改 MySQL 的配置文件(通常是
。在my.cnf或my.ini文件)[mysqld]部分添加以下一行:[mysqld] local_infile = ON添加配置并保存文件后,必须重启 MySQL 服务器服务才能使更改永久生效
导入
truncate table person;
load data infile '/opt/mysql8.0.35/mysql-files/person.txt' ignore into table person
fields terminated by ',' enclosed by '"' --用,进行分割,默认是tab,对于","这种不分割
lines terminated by '\n' starting by '' --行结束标志
ignore 1 lines -- 忽略第一行
(id,name,salary,@sal) --文件多一列:第四列不导入@sal是占位符 导入的表多一列,直接(id,name,salary)三列就行 【注意列名是单独放在语句最后(如果有set子句则在set语句之前)】
set import_time=current_timestamp --增加一列时间
set salary=if(@sal<3000, @sal+999, @sal); --对占位符那一列做处理
select * from peron;

客户端导入
LOAD DATA LOCAL INFILE '/data/mysql/mysql-files/tmp_accountcancel.txt'
INTO TABLE tmp_accountcancel
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES
(userid);

LOAD DATA LOCAL INFILE '/data/mysql/mysql-files/tab_username.txt'
INTO TABLE tab_username
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES
(USERNAME);

浙公网安备 33010602011771号