mysql分隔符问题

时间:2010-09-21 13:16:28

标签: mysql

我该怎么做:

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

不起作用:(

5 个答案:

答案 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