我目前正在使用Postgresql中的copy命令将sql查询的结果输出到带有标题的CSV文件。我想要做的是在标题和CSV数据的开头之间添加换行符,以便它更具可读性。
有没有一种简单的方法可以通过改变我的查询来做到这一点?谢谢你的帮助!
答案 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
"
哪个不太正确。
你只需要修改你的特定环境,了解如何添加换行符,但希望这里有足够的信息开始。