MySQL分隔符问题

5

我该怎么做:

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

无法正常工作 :(

请阅读关于“--delimiter”选项的手册,我认为这不是您要查找的正确选项。 - Doomsday
4个回答

16

我不太明白问题是什么?你能解释一下你想要什么吗?

如果您希望将分隔符添加到输出中,则必须使用 CONCAT_WS

mysql -u myuser -p mydb -e "select CONCAT_WS(',',f1,f2) from mytable" > /tmp/mydata.txt

4

您可以像这样使用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' "

3
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

1
作为对 sed 的替代,您可以使用 tr '\t' ',' - msb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接