我该怎么做:
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
无法正常工作 :(
我该怎么做:
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
我不太明白问题是什么?你能解释一下你想要什么吗?
如果您希望将分隔符添加到输出中,则必须使用 CONCAT_WS :
mysql -u myuser -p mydb -e "select CONCAT_WS(',',f1,f2) from mytable" > /tmp/mydata.txt
您可以像这样使用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' "
SELECT INTO OUTFILE
需要为mysql用户授予** FILE **权限https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html (在mysql主机文件系统上写入的权限)。这是一个漏洞问题,因此数据库的** ALL PRIVILEGES **不包括FILE权限。
在大多数情况下,最好使用管道替换制表符\t
到任何你想要的字符,
:
mysql -h -p dbname -e 'SELECT * FROM table_name;' | sed 's/\t/,/g' > out.csv
sed
的替代,您可以使用 tr '\t' ','
。 - msb