MySQL 使用 Load Data Infile 命令 导入数据的方法

前言
网上大多数观点提到,为了数据安全,MySQL的导入数据功能默认是关闭的。要使用该命令首先要开启使用权限。
导入句子:load data [low_priority] [local] infile ‘file_name txt’ [replace | ignore]
into table tbl_name
[fields]
[terminated by’t’]
[OPTIONALLY] enclosed by ‘’]
[escaped by’’ ]]
[lines terminated by’n’]
[ignore number lines]
[(col_name, )]
其中中括号[]的部分可选。
本次尝试导入本地文件,命令如下:
LOAD DATA LOCAL INFILE ‘D:/PyWorkDirectory/CPI2.csv’ INTO TABLE CPI
fields terminated by ‘,’ optionally enclosed by ‘"’ escaped by ‘"’
lines terminated by ‘\r\n’;
注意这里的引号可能会因复制粘贴而变形!
提示 1:不支持导入Excel文件,建议使用csv文件作为导入模板;2:地址要使用正斜杠‘/’而不是反斜杠‘\’。
语法可参考这篇文章:mysql导入数据load data infile用法

笔者曾经尝试通过Dbeaver客户端输入Load Data Infile命令但并未成功,所以最后是通过cmd进入MySQL 控制台来实现导入数据的。

问题一:无法通过Dbeaver等客户端使用该命令
这或许是配置的问题,很可惜此次没能解决,只好放弃这种方案,如果以后解决了这个问题再更新。

图1:Dbeaver客户端报错
在这里插入图片描述
问题二:在cmd命令窗口使用该命令
首先确保MySQL相关的服用已经开启,打开cmd;正常情况下,我们输入mysql -hlocalhost -uroot -pxxxxx(xxxx表示登录密码)登录mysql控制台可以进行大部分操作,但这样登录后仍旧无法使用load data infile 命令导入数据,报了一个ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.的错误。

图2:正常登录下的导入报错
在这里插入图片描述
在该命令下加上–local-infile,即打开cmd后输入mysql -hlocalhost -uroot -pxxxxx --local-infile

图3:声明–local-infile方法后仍旧无法导入数据
在这里插入图片描述
此时需要开启导入权限,输入set global local_infile = 1;(有趣的是,尽管Dbeaver上使用load data inifile命令未成功,但是使用set global local_infile = 1却成功了,所以有理由怀疑Dbeaver可以使用load data inifile,只是不知道怎么配置);
此时再输入导入命令就可以成功了。

图4:设置global local_infile变量为1
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的`LOAD DATA LOCAL INFILE`命令中,当导入数据时,MySQL会根据数据文件中的内容来进行数据类型推断。如果数据文件中的某一列被解释为整数类型,而实际上该列包含了字符串数据(如VARCHAR类型),那么MySQL会尝试将该列转换为整数类型。 这种情况下,可能是由于数据文件中的某些行中的数据不符合该列定义的数据类型,导致了自动转换错误。MySQL会根据一些规则进行自动转换,例如将非数字字符转换为0或忽略该行数据。 为了避免这种情况,你可以在`LOAD DATA LOCAL INFILE`命令中明确指定每列的数据类型,而不依赖于自动推断。使用`FIELDS TERMINATED BY`和`LINES TERMINATED BY`来指定字段和行的分隔符,并使用`SET`关键字来指定每列的数据类型。 例如,假设你有一个包含字符串的CSV文件(以逗号分隔),其中一列应该是VARCHAR类型。你可以使用以下命令导入数据并明确指定数据类型: ```sql LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column1, @var1, column3) SET column2 = CAST(@var1 AS VARCHAR(255)); ``` 在上面的命令中,我们使用了一个用户变量`@var1`来临时存储数据,并使用`CAST`函数将其转换为VARCHAR类型,并将其赋给目标列`column2`。 通过明确指定每列的数据类型,你可以确保导入数据时不会发生意外的类型转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值