70

我环顾四周,没有找到解决方案,对此的任何帮助都会很棒。

询问:

LOAD DATA INFILE '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' 
INTO TABLE `tba`.`tbl_name` 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(
field1, field2, field3
)

错误:

Can't get stat of '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' (Errcode:2)

笔记:

我在连接到 MySQL 5.x 的 OSX 10.6.4 上运行 MySQL Query 浏览器

我尝试过的事情:

  • 拖放
  • 密码 777
  • 放入具有777权限的文件夹以及具有777权限的文件
4

5 回答 5

133

尝试使用LOAD DATA LOCAL INFILE而不是LOAD DATA INFILE

否则检查apparmor是否对您的目录有效

于 2010-08-12T20:10:12.773 回答
11

我有一个类似的问题。该决议是一个有点丑陋的黑客,但比 apparmor 变通办法更容易记住,前提是您可以“sudo”。首先,我必须将输入文件放在我正在使用的数据库的 mysql 子目录中:

sudo cp myfile.txt /var/lib/mysql/mydatabasename

这会进行复制并将 ' root' 作为文件所有者。进入 mysql 并执行后USE mydatabasename,我能够使用填充适当的表

LOAD DATA INFILE 'mytabdelimitedtextfile.txt' INTO TABLE mytablename;
于 2013-09-17T16:50:05.817 回答
2

使用 --local 参数将对此有所帮助。

示例:mysqlimport --local databasename file.txt -p

来源: http ://dev.mysql.com/doc/refman/5.1/en/load-data.html “--local 选项导致 mysqlimport 从客户端主机读取数据文件”

于 2014-08-03T23:55:44.370 回答
1

对我来说,将内容复制到 /tmp 并将其用作源文件夹就可以了。我使用 MariaDB,而我的版本不允许使用“LOCAL”修饰符。有趣的是,授予对 CSV 文件夹的读写权限也不起作用。

于 2016-06-21T16:29:21.760 回答
0

在 AWS 实例上的 mysql 中填充表时,我遇到了同样的问题。

就我而言,我在实例本身中有 csv 文件。

放置绝对路径解决了我的问题。

这是 MySQL 文档中的一行

如果指定了 LOCAL,则该文件由客户端主机上的客户端程序读取并发送到服务器。该文件可以作为完整路径名给出以指定其确切位置。如果作为相对路径名给出,则该名称被解释为相对于启动客户端程序的目录。

http://dev.mysql.com/doc/refman/5.7/en/load-data.html

于 2016-07-04T11:30:20.833 回答