【MySQL】总结:外部txt数据导入MySQL的避坑指南(ERROR code: 3948/2068/1300/1366)

本文主要是介绍【MySQL】总结:外部txt数据导入MySQL的避坑指南(ERROR code: 3948/2068/1300/1366),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一)背景:

昨天在导入外部数据(txt文件)到MySQL时成功收获5连错,花了小半天把问题解决,意识到这或许是新手在导入数据时容易出现的问题。因此决定基于报错问题总结导入外部数据时要注意的事项,希望能够帮到MySQL学习的同好们。

(二)环境及语句:

Windows 10;

MySQL Server 8.0.29;

MySQL Workbench 8.0.29;

(三)结论:

我导入txt文件的代码如下:

 语句模板为:

 # 导入外部数据到Monthly_Indicator中load data infile 'txt文件的绝对路径(包含扩展名)'into table 目标表格fields terminated by '\t' # 我的txt文件分割方式为制表符,制表符符号为'\t',因此指定MySQL导入时的分割方式为'\t';ignore 1 lines;# 我的txt文件第一行是字段名,导入时应忽略字段名,故指定MySQL忽略第一行;

需要注意的事项为:

  1. 请检查你的local_infile状态,确保它是打开的;

  2. 请将txt文件编码格式改成utf-8;

  3. 请确保外部文件对应字段的数据类型和MySQL中的一致;

  4. 请将txt文件移至MySQL Server路径的Uploads文件夹中:

(四)避坑总结:

1. 请检查你的local_infile状态:

  • local_infile是全局系统变量,功能是决定能否使用load data local infile的命令。
  • MySQL 8.0.29 中,local_infile的默认状态是关闭的。
  • 因此,如果想利用load data local infile录入外部数据,请先将其打开。
  • 未打开local_infile的报错为:

       ERROR: 3948, Loading local data is disabled - this must be enabled on both the client and server sides.

打开local_infile的方式如下:

  • 打开MySQL Server 8.0 Command Line Clinet:


  • 检查local_infile状态:

    输入如下语句

    mysql > show variables like 'local_infile';
    # 输入上述语句就能够检查local_infile状态。
    (mysql > 是打开客户端后自动显示的,所以不用重复输入)

     

    可以看到local_infile的Value为"OFF“,此时的local_infile是关闭的,无法通过load data local infile导入外部数据。

  • 打开local_infile开关:

    (1)输入如下语句

set global local_infile = 1;

 

 (2)再次检查local_infile状态:

可以看见此时的local_infile已经打开了。

2. 请将txt文件编码格式改成utf-8:

  • MySQL的默认编码是utf8;
  • txt文件的默认编码是ANSI;
  • 如果不改txt文件编码就直接导入MySQL,则会读取失败;
  • 不改txt文件编码的报错为:

      Error Code: 1300. Invalid utf8mb4 character string:''

改变txt的编码,只需要打开目标文件,点击【另存为】,在弹出界面的右下角就能够选择编码格式,我们选择UTF-8就好了。

 3. 请确保外部文件对应字段的数据类型和MySQL中的一致:

  • 导入数据前,我们会现在MySQL中定义表,并为字段设置数据类型;
  • 如果txt文件对应的字段数据类型和MySQL对应字段数据类型不一致,就可能会发生报错;
  • 例子MySQL中字段ranking设置为整型,而txt中ranking却是字符' - '。那么,在将txt录入MySQL时,ranking数据的录入就会因为数据类型不符而失败;
  • 数据类型不匹配时的报错为:

      Error Code: 1366. Incorrect integer value: '- ' for column 'ranking' at row 1

      (仅展示一种情况,实际报错情况不仅限于这一种)

4. 请将txt文件移至MySQL Server路径的Uploads文件夹中:

  • 未将txt文件移至Uploads文件夹的报错为:

      Error Code: 2068. LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

 由于不把txt文件移到Uploasd文件夹下会报错,所以我们应该将txt移进去,方法如下:

(1)找到你的MySQL Server路径:

如果是自定义路径安装的,指定的路径就是MySQL Server8.0的路径;如果忘记了路径在哪里,可以打开 MySQL Server 8.0 Command Line Clinet,输入以下语句找回:

show variables like '%basedir%';

 

(2)将txt文件移到MySQL Server8.0\Uploads中: 

双击MySQL Server8.0后,进入Uploads文件夹。

 将txt文件移到这里就好了。

 

这篇关于【MySQL】总结:外部txt数据导入MySQL的避坑指南(ERROR code: 3948/2068/1300/1366)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364825

相关文章

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架