mysql - LOAD DATA INFILE 不起作用

标签 mysql sql database

我在我的 Ubuntu 机器上运行 MySQL。我检查了 /etc/mysql/my.cnf 文件,它显示了我的数据库临时目录:

...
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
...

如图所示,我的 MySQL 服务器临时目录是 /tmp

我有一个students.dat文件,这个文件的内容如下:

...
30  kate    name
31  John    name
32  Bill    name
33  Job     name
...

我将上面的students.dat 文件复制到/tmp 目录。然后,我运行以下命令将数据从 students.dat 文件加载到我数据库中的 students 表:

LOAD DATA INFILE '/tmp/students.dat'
            INTO TABLE school_db.students
            FIELDS TERMINATED BY '\t'
            LINES TERMINATED BY '\n'
            (student_id, name, attribute)

但我在 MySQL 控制台中收到错误消息:

ERROR 29 (HY000): File '/tmp/students.dat' not found (Errcode: 13)

为什么mysql找不到students.dat文件虽然文件在mysql临时目录下?

附言

students 表如下(在运行 LOAD DATA INFILE... 查询之前表中已经有 4 条记录):

mysql> describe students;

    +-------------------+--------------+------+-----+---------+-------+
    | Field             | Type         | Null | Key | Default | Extra |
    +-------------------+--------------+------+-----+---------+-------+
    | student_id        | int(11)      | YES  |     | NULL    |       |
    | name              | varchar(255) | YES  | MUL | NULL    |       |
    | attribute         | varchar(12)  | YES  | MUL | NULL    |       |
    | teacher_id        | int(11)      | YES  |     | NULL    |       |
    +-------------------+--------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)

最佳答案

查看来自file not found error 的第六篇帖子.似乎如果您指定 LOAD DATA LOCAL INFILE 应该可以工作(他们添加了 LOCAL 关键字)

关于mysql - LOAD DATA INFILE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8471727/

相关文章:

mysql - SQL 填充键/值表

mysql - 查明是否有每日插入mysql表

database - 如何从 laravel 表中获取一些特定的列名。 (不是所有列名)

mysql - 部署并安装应用程序以及数据库(MySQL或MariaDB)--离线环境--

c# - 从csv导入到asp.net中的mysql数据库中删除双引号("")

mysql - 将随机数分配给 mySQL 中具有 NULL 值的列

sql - 如何在 SELECT 语句中使用 postgres 变量?

mysql - SQL 一次匹配多个查询

mysql - 搜索 1 亿条记录的性能

mysql - 多对多关系mysql设计