我该怎么做:
mysql -u myuser -p mydb -e "select f1,f2 from mytable" > /tmp/mydata.txt
但我想用逗号分隔字段。
mysql --delimiter=, -u myuser -p mydb -e "select f1,f2 from mytable" > /tmp/mydata.txt
不起作用:(
答案 0 :(得分:9)
我真的不明白这是什么问题?你能解释一下你想要的吗?
如果您希望在输出中添加分隔符,则必须使用 CONCAT_WS :
mysql -u myuser -p mydb -e "select CONCAT_WS(',',f1,f2) from mytable" > /tmp/mydata.txt
答案 1 :(得分:1)
您可以像这样使用INTO OUTFILE:
mysql -u myuser -p mydatabase -e
"select field1 , field2 FROM mytable INTO OUTFILE
'/tmp/myfilename.csv' FIELDS TERMINATED BY ','
ENCLOSED BY '\"' LINES TERMINATED BY '\n' "
答案 2 :(得分:1)
SELECT INTO OUTFILE
需要mysql用户https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html的** FILE **权限(允许在mysql主机文件系统上写入)。这是漏洞问题,因此数据库的** ALL PRIVILEGES **不包含文件权限。
在大多数情况下,最好使用管道替换,从列表符号\t
到您想要的任何字符,
:
mysql -h -p dbname -e 'SELECT * FROM table_name;' | sed 's/\t/,/g' > out.csv
答案 3 :(得分:0)
将引号放在引号之间:
mysql --delimiter="," -u myuser -p mydb -e "select f1,f2 from mytable" > /tmp/mydata.txt
答案 4 :(得分:0)
您也可以尝试使用SELECT INTO OUTFILE命令生成CSV文件。信息在这里:http://dev.mysql.com/doc/refman/5.1/en/select.html