1

我正在尝试使用以下命令将 csv 文件加载到 mySQL 中:

LOAD DATA INFILE '/tmp/alcoa_2012_05_15.csv' into table alcoa fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@var1, Time, volume, open, close, min, max)
set date = STR_TO_DATE(@var1, '%d-%b-%y')

我收到以下错误

error 13, load data infile can't get stat of file Errcode: 2

它说它找不到数据文件。我尝试了命令的小变化:

LOAD DATA LOCAL INFILE ...

其他一切都一样,现在我收到以下错误消息:

ERROR 1148, The used command is not allowed with this MySQL version!

我在 Ubuntu 12.04 上使用最新下载的 MySQL(都在 2 周前安装)

我很困惑,经过大量搜索后,这个论坛已经回答了以前的问题,这些问题很接近,但并不完全是答案。

谢谢

杰夫

4

6 回答 6

4

尝试用“LOAD DATA LOCAL ”替换您的“LOAD DATA”

  • “LOAD DATA”用于数据库服务器上的文件。
  • “LOAD DATA LOCAL”用于客户端上的文件。你有哪个?
于 2015-01-04T07:45:59.930 回答
1

这个问题真是令人沮丧,直到我发现 MySQLsystemd-private-abcdef/tmp. 所以它永远找不到文件并加载数据。

PrivateTmp=false解决方案是在/etc/systemd/system/mysqld.service文件中设置:

在我的情况下,文件最终看起来像这样:

.include /usr/lib/systemd/system/mysqld.service
[Service]
LimitNOFILE=20000
PrivateTmp=false
于 2013-01-06T06:05:44.693 回答
1

我遇到了同样的问题,无法将数据加载到 MySQL 表中,然后我自己解决了这个问题。

错误代码 13 只不过是权限问题。

错误代码 02 是找不到文件。

这是解决方案:

检查你的文件的路径,如果它是正确的,那么它的权限问题可以解决如下: 默认local-infile设置为值 0。为了使用LOAD DATA LOCAL INFILE 它必须启用。

所以像这样启动MySQL

mysql -u 用户名 -p --local-infile

这将LOCAL INFILE在启动期间启用,因此使用它不会有任何问题!

于 2014-12-05T06:44:01.063 回答
0

我认为这里的另一个重要问题尚未为用户解决。这是一个简单的问题,无论是使用命令行中的命令还是命令(错误代码 2)
都无法找到文件。 一个非常自然的 unix/linux 用户假设是用户是:mysql> shellmysqlimport

  1. 从给定目录运行导入操作
  2. 跑步mysqlimportshell
  3. 找到他想在那里导入的文件
  4. 然后假设不需要额外的路径,即只需要文件名或相对路径。

但对我来说很明显,MySQL 使用的相对路径位于 MySQL 的数据库目录的位置,即/usr/lib/mysql/<dbname>.
它正在那里寻找没有任何路径命名的文件,因此错误代码 2!

那是用户想要导入的数据库的主目录,所以它看起来在那里,而不是您启动 shell 的目录,尤其是命令行导入命令mysqlimport.

mysqlimport这对于我称之为缺陷的命令来说是非常违反直觉的。我不确定 MySQL db 目录是否是安装 MySQL 时的可控位置,因此对于任何特定系统来说它可能会有所不同。
解决方案是始终提供要导入的文件的绝对路径。 答对了!我通过授予在此处写入文件的权限(dir 由“MySQL”用户拥有),然后使用相对路径以及 shell 和命令行命令上的绝对路径访问它来测试这一点。确保在使用 MySQL 权限后重新创建了数据库!

于 2015-03-11T13:24:42.050 回答
0

谢谢@raina77ow,关于检查文件权限的建议
我花了很长时间查看其他所有内容。终于看到了你的帖子,看了看。

我的问题不是权限,而是我在文件上放置的额外扩展名,因为该文件夹被设置为隐藏已知扩展名。

在 Windows 资源管理器中查看文件的属性使我能够.txt在最后看到并更正额外内容。

一旦我修复它,加载数据本地 infile 就像其他文件一样具有魅力。

希望这对其他人有帮助。

于 2013-06-13T10:47:05.460 回答
0

如果您使用的是 Debian,另一种解决方案是将文件移动到您的“/tmp”目录中。这为我解决了问题。

于 2016-07-28T22:21:07.623 回答