使用mysql load data infile导入csv数据,总是报错 8C

问题:
命令行登录mysql,使用load data infile命令导入csv数据报错:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement;如图:
图片说明

我已经在my.ini配置文件里写上了secure-file-priv参数,如图:
图片说明

为什么还是出错呢?请知道的各位解答一下,多谢了!

系统环境:win10,mysql5.7.16

全部家当8个金币求解:-)

6个回答

把secure-file-priv那一行在配置文件中注释

asd_op
水手008 感谢oyljerry的回答
2 年多之前 回复

问题找到了,下面解答:

出现错误的写法:load data infile 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv'

1:load data infile 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv'
2:load data infile 'C:/imi/dev/mysql-5.7.16-winx64/bin/tmp/ds-20170405.csv'
1,2这两种写法均能导入。

分析,大家仔细观察在我的文件路径中有一个tmp文件夹,如果写成 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv'这种形式,load data infile命令会把这个路径字符串中的]"\tmp"中的\t作为tab,所以实际上传给mysql的路径是C:\imi\dev\mysql-5.7.16-winx64\bin(这里是一个tab空格)mp\ds-20170405.csv,很明显这个路径不存在且不是配置里的路径,所以总是报The MySQL server is running with the --secure-file-priv option so it cannot execute this statement错误。
为了避免这种情况需要使用双斜线进行转义:1:load data infile 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv';
或者使用linux路径的正斜线写法:1:load data infile 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv'

asd_op
水手008 load data infile 'C:\\imi\\dev\\mysql-5.7.16-winx64\\bin\\tmp\\ds-20170405.csv'
2 年多之前 回复

注释掉不行,出同样的错误。

下面是通过show命令显示的变量值:
mysql> show variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |
+------------------+-------+
1 row in set, 1 warning (0.00 sec)

更正:1中写法应该是用两个反斜线进行转义:load data infile 'C:\imi\dev\mysql-5.7.16-winx64\bin\tmp\ds-20170405.csv'

我靠,csdn又把两个反斜线变成一个了:

更正:1中写法应该是用两个反斜线进行转义:load data infile 'C:\\imi\\dev\\mysql-5.7.16-winx64\\bin\\tmp\\ds-20170405.csv'

给个图:

图片说明

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!