使用mysql命令行生成CSV,除了/ tmp之外,不能在任何其他目录中生成它

时间:2014-12-02 08:23:21

标签: mysql csv permissions

我正在通过mysql命令行创建csv和mysql转储。 为了创建mysql文件,我可以在我的必需目录中轻松创建.sql转储

 mysqldump  -u"root" -p"root"  dns packet --where="server_id=1 > /var/www/mydatafile/SQLData.sql

一切正常但是在CSV的情况下,它只在TMP文件夹中创建文件,它不能在任何其他位置创建文件

 mysql -u"root" -p""  dns -e "SELECT * INTO OUTFILE '/var/www/mydatafile/my_csv.csv'  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' FROM TABLENAME";

它说

ERROR 1 (HY000) at line 1: Can't create/write to file '/var/www/mydatafile/my_csv.csv' (Errcode: 13)

我已经获得了www目录的许可,但它仍然给出了同样的错误......我可以知道在不能轻松生成SQL的情况下不将CSV创建到任何其他位置的原因......

1 个答案:

答案 0 :(得分:0)

你的目录/var/www/mydatafile/必须是mysql用户可写的(通常是mysql)。您可以检查文件my.cnf中的哪个用户(基于debian / ubuntu,位于/etc/mysql/)。

第一个命令有效,因为你向stdout生成sql指令并将输出重定向到一个文件,以便使用当前的用户环境。

第二个命令是mysql的内部命令,因此mysql用户需要正确的权限。

编辑:您也可以use mysqldump使用以下命令生成csv:

mysqldump -u"root" -p"root"  dns packet -p -t --fields-terminated-by=, --lines-terminated-by="\r\n"