是否有一个标准的方法来获得LOAD INFILE工作?



加载数据文件一直是一个痛苦的屁股设置,似乎没有标准的方式来让它工作,但我一直能够让它工作....最终,除了现在。

Error Code: 29. File '/loadinfile/file.csv' not found (OS errno 13 - Permission denied)

系统如下:

MySQL版本8.0.29-0ubuntu0.22.04.2Ubuntu 22.04

加载文件目录属于mysql:mysql和文件相同,我尝试过chmod 757甚至777

在配置文件中,我尝试了以下变化:

secure_file_priv = "/loadinfile/"
secure_file_priv = '/loadinfile/'
secure_file_priv = ""
secure_file_priv = ''

下面也可以设置:

[mysqld]
local-infile = 1
[client]
loose-local-infile=1

改变

LOAD DATA INFILE '/loadinfile/file.csv' INTO TABLE table

LOAD DATA LOCAL INFILE '/loadinfile/file.csv' INTO TABLE table

将错误信息更改为:

Error Code: 2. File 'loadinfilefile.csv' not found (OS errno 2 - No such file or directory)
Error Code: 2. File 'loadinfilefile.csv' not found (OS errno 2 - No such file or directory)

上面的消息表明你的文件所在的目录是错误的!您必须定义完整路径:

例如在Mac中如果你的文件位于桌面,它必须像这样:

LOAD DATA LOCAL INFILE '/Users/computer_name/Desktop/filename.file_extension' INTO TABLE table

在windows

LOAD DATA LOCAL INFILE 'C:Userscomputer_nameDesktopfilename.file_extension' INTO TABLE table

希望这能解决你的问题。

错误码:2。无效的文件路径。保持本地INFILE选项,并指定CSV文件的完整路径,或者确保CSV文件路径正确。试一试Full path,看看是否能解决问题。From MySQL Docs

如果指定LOCAL,则文件必须位于客户端主机上。客户机程序读取该文件,按如下方式定位它:

如果文件名是绝对路径名,客户端程序将使用它鉴于。

如果文件名是一个相对路径名,客户端程序查找相对于其调用目录

的文件

编辑确保您的mysqld.cnf或主MySQL配置文件具有以下变量

secure_file_priv = ""
local_infile=1

并且您的全局变量local_infile为OFF,请将其打开。您可以检查,如果你运行这个查询

SHOW GLOBAL VARIABLES LIKE 'local_infile'; 

如果是,打开

最后,确保重新启动SQL服务以反映更改。你可以通过执行

service mysql restart

希望这能解决你的问题

相关内容

  • 没有找到相关文章

最新更新