如何使用sql向csv文件添加新的换行符?

时间:2013-01-08 05:59:44

标签: sql postgresql csv

我目前正在使用Postgresql中的copy命令将sql查询的结果输出到带有标题的CSV文件。我想要做的是在标题和CSV数据的开头之间添加换行符,以便它更具可读性。

有没有一种简单的方法可以通过改变我的查询来做到这一点?谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

不,没有。在对输出进行后处理的脚本中执行此操作。 PostgreSQL的COPY不应该产生漂亮的可读输出,它可以产生可靠的,一致的输出。

答案 1 :(得分:1)

实际上,它有可能,虽然它有点像黑客:

使用查询中的AS子句重命名输出的最后一列,以在列的末尾添加换行符。您必须确保对列名称进行双引号以保留非标准字符,并且不能在COPY的FORCE QUOTE子句中使用该列。

我能够按照您的要求使用此查询:

copy (select typname, typlen, typinput, typoutput as "typoutput^L" from pg_type limit 10) to stdout with csv header;

我系统上的前三行输出如下所示:

typname,typlen,typinput,typoutput

bool,1,boolin,boolout

请注意,此输出中的“^ L”实际上是在PostgreSQL 9.2 psql客户端的Linux控制台中使用组合键。尝试使用字符串“^ L”不起作用。此外,这也不起作用,虽然它让你更接近(注意换行符):

copy (select typname, typlen, typinput, typoutput as "typoutput
" from pg_type limit 10) to stdout with csv header;

最后两行看起来像这样:

typname,typlen,typinput,"typoutput
"

哪个不太正确。

你只需要修改你的特定环境,了解如何添加换行符,但希望这里有足够的信息开始。