我在.txt文件上有大量数据(类似90.000行和10列,每个'项'用逗号分隔)我需要找到一种方法将它从我的txt文件导入到mysql表。 我做了一些研究,发现了以下代码:
LOAD DATA INFILE "/my_path/file.txt" INTO TABLE "table" CHARACTER SET "utf8" FIELDS TERMINATED BY "," LINES TERMINATED BY "\r\n";
但是这给了我以下错误:
Error Code: 29. File '/my_path/file.txt' not found (OS errno 13 - Permission denied) 0.000 sec
所以在搜索了一下之后,我发现很多人都有这个问题,但只是把“LOCAL”这个词解决了(LOAD DATA LOCAL INFILE),但这给了我这个错误:
Error Code: 1148. The used command is not allowed with this MySQL version 0.000 sec
(我正在使用MySQL Workbench 8.0)
所以我尝试在my.ini文件中设置一些全局变量,如secure-file-priv=""
,loose-local-infile=1
和local-infile=1
,但似乎没有任何效果。
任何人都可以帮助我......
Ps 1 :我无法使用向导导入,因为即使它可以工作,也太慢了
Ps 2 :我尝试将我的txt文件转换为csv,但它也无效。
答案 0 :(得分:2)
Without LOCAL
, LOAD DATA INFILE
告诉MySQL服务器在自己机器的文件系统上找到该文件并阅读它。
因此,路径和文件必须存在于服务器计算机上。并且,运行MySQL服务器的凭据(用户名)必须具有对该文件的读访问权。
您的permission denied
错误提示我MySQL服务器无法读取该文件。
答案 1 :(得分:0)
a)mysql无权从权限角度访问输入文件
b)输入文件未正确编码。
解决了访问问题并将输入文件编码更正为utf8后,加载工作正常。