当前位置:   article > 正文

MySQL导入数据报错:mysql 使用 load data local infile导入数据Loading local data is disabled(Error 3948)和Error 2068_load data local infile 不支持

load data local infile 不支持

Loading local data is disabled; this must be enabled on both the client and server sides

  • 问题背景

    在学习黑马的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='商品表';
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
    • Step2:开启导入权限

      set global local_infile=1;
      
      • 1
    • Step3:导入数据

      load data local infile '/root/sql/tb_sku1.sql' into table `tb_sku` fields terminated by ',' lines terminated by '\n';
      
      • 1

      注意:要确保路径正确,同时需要导入五次,我有五张表: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
    
    • 1

终于成功了o((>ω< ))o
在这里插入图片描述


参考文章

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/509328
推荐阅读
相关标签
  

闽ICP备14008679号