我正在通过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创建到任何其他位置的原因......
答案 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"