赞
踩
问题背景
在学习黑马的MySQL进阶课程时,由于为了测试SQL的性能指标,需要导入一个数据量特别大的表,表中有1000w条件记录(大约2.2GB的数据),此时老师已经将这1000w条记录拆分成5张表了,我需要使用
load
指令将这五张表导入数据库,结果执行指令的过程中Navicate报了了Loading local data is disabled; this must be enabled on both the client and server sides
这个错误
问题原因
其实这个问题看一眼报错信息就知道了,是由于
local_infile
参数没有开启(MySQL默认是0表示关闭该参数)。该参数的作用是控制导入权限,也就是说MySQL默认是禁止直接从外部导入数据的,相对应的参数还有local_outfile
,它是控制导出权限的。
解决方法
这里我就不单单地记录如何解决这个问题,还顺带记录如何批量导入大量数据的这个过程,以供日后参考
Step1:创建一张表 tb_sku
CREATE TABLE `tb_sku` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id', `sn` varchar(100) NOT NULL COMMENT '商品条码', `name` varchar(200) NOT NULL COMMENT 'SKU名称', `price` int(20) NOT NULL COMMENT '价格(分)', `num` int(10) NOT NULL COMMENT '库存数量', `alert_num` int(11) DEFAULT NULL COMMENT '库存预警数量', `image` varchar(200) DEFAULT NULL COMMENT '商品图片', `images` varchar(2000) DEFAULT NULL COMMENT '商品图片列表', `weight` int(11) DEFAULT NULL COMMENT '重量(克)', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `category_name` varchar(200) DEFAULT NULL COMMENT '类目名称', `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称', `spec` varchar(200) DEFAULT NULL COMMENT '规格', `sale_num` int(11) DEFAULT '0' COMMENT '销量', `comment_num` int(11) DEFAULT '0' COMMENT '评论数', `status` char(1) DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
Step2:开启导入权限
set global local_infile=1;
Step3:导入数据
load data local infile '/root/sql/tb_sku1.sql' into table `tb_sku` fields terminated by ',' lines terminated by '\n';
注意:要确保路径正确,同时需要导入五次,我有五张表:tb_sku1、tb_sku2、tb_sku3、tb_sku4、tb_sku5
结果还是出错了┭┮﹏┭┮/,报了一个LOAD DATA LOCAL INFILE file request rejected due to restrictions on access
经过百度,发现还需要有一个步骤(接着上面的步骤继续)
Step1:退出MySQL
直接会按快捷键Ctrl+d
Step2:使用下面的指令进行登录
mysql -u 用户名 -p --local-infile
终于成功了o((>ω< ))o
参考文章:
- ERROR3948: Loading local data is disabled - this must be enabled on both the client and server sides_young_kp的博客-CSDN博客
- 【MySQL基础篇】数据导出导入权限与local_infile参数_mysql local_infile_GottdesKrieges的博客-CSDN博客
- mysql使用load data local infile导入数据Error 3948和Error 2068_error 2068 (hy000): load data local infile file re_jLiu2020的博客-CSDN博客
在此致谢(●ˇ∀ˇ●)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。