一:
在导入数据出现这个错误一般是因为地址里面的斜杠使用错误。比如下面
load data local infile 'D:\road.txt'into table roadcd fields terminated by '\t';
参考的许多资料,这里的地址都是使用单斜杠,但我却出现下面的错误信息:
‘road.txt' not found (Errcode: 2 - No such file or directory)
如果你和我们错误信息一样的话,那就把单斜杠(\)改为双斜杠(\\)试试;
load data local infile 'D:\\road.txt'into table roadcd fields terminated by '\t';
这样的话就OK了,成功识别文件。
二:
开启文件存取权限,mysql刚安装时默认没有文件存取权限,若导入文件时,提示信息如下
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.
表明需要开启secure-file-priv(安全文件权限),可以通过以下命令查看当前状态
SHOW VARIABLES LIKE "secure_file_priv";
若显示 secure-file-priv的value为NULL,表明没有文件读取权限。
解决方案:
1,如果secure_file_priv的value指定了一个安全文件夹,直接将.csv文件放到对应文件夹中即可,或者将secure_file_priv的value指向我们需要的文件夹。
2,如果为NULL,则需要开启安全文件权限
去掉导入的目录限制。可修改mysql配置文件(Windows下为my.ini,在安装目录中, Linux下的my.cnf),在[mysqld]下面,查看是否有:
secure_file_priv =
如上这样一行内容,如果没有,则手动添加。如果存在如下行:
secure_file_priv = /home
这样一行内容,表示限制为/home文件夹。而如下行:
secure_file_priv =
这样一行内容,表示不限制目录,等号一定要有,否则mysql无法启动。
修改完配置文件后,重启mysql生效。
重启后:
关闭:service mysqld stop
启动:service mysqld start
再查询结果:
此时,即可进行文件的导入导出操作。
三,使用mysql导入本地文件时提示
"ERROR 1148 (42000): The used command is not allowed with this MySQL version"
原因是为了安全起见,MYSQL默认不允许客户端从本地载入文件 。
解决方法如下,
服务器端:
需要将local_infile这个全局变量设置为ON,登陆到MYSQL中后执行命令
show global variables like 'local_infile';
显示当前local_infile值为OFF,没有从本地载入文件权限
执行命令,将其值置为ON,开启权限。
set global local_infile=on;
然后,客户端我们还需要在启动的时候添加参数--local-infile=1,命令如下
mysql -u root -p --local-infile=1
设置完成后即可从本地载入文件了。