MySql:加载数据到文件中

MySql:加载数据到文件中

我在用MySQL v5.1乌班图机器。

MySQL数据目录是/var/lib/mysql/

我有一个test.dat文件位于/var/lib/mysql/tmp/test.dat

我想将test.dat文件中的数据加载到数据库表中,因此我执行以下 SQL 语句:

LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
            INTO TABLE myapp.cars;

但我收到以下错误:

Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'

可能是什么原因??

聚苯乙烯我想到的一件事是/var/lib/mysql/只能通过根用户,但我不确定是否是这个原因。

答案1

$ ls -ld /var/lib/mysql
drwx------ 21 mysql mysql 4096 2011-11-18 14:07 /var/lib/mysql

是的,您没有该目录的权限(这可能root:root取决于您的设置)。使用:

sudo mysql -u mysqluser -e "LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat' INTO TABLE myapp.cars;"

或者只需将文件复制到您的主目录(或其他位置)并将chown其发送给您自己。

答案2

如果您的文件位于本地主机上,请使用

LOAD DATA LOCAL INFILE ...

代替LOAD DATA INFILE

另外,具有 mysql 用户可读的文件权限,并且由 mysql root 运行该文件:

GRANT FILE ON *.* to <your_db_user_name>@localhost;

相关内容