我目前正在使用Postgresql中的copy命令将sql查询的结果输出到一个带有标题的CSV文件。我想要做的是在标题和CSV数据的开头之间添加一个换行符,以使其更具可读性。
有没有一种简单的方法来改变我的查询呢?谢谢你的帮忙!
发布于 2013-01-09 02:10:37
实际上,这是可能的,尽管这有点小麻烦:
使用查询中的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.2psql客户端的Linux控制台中使用的组合键。尝试使用字符串"^L“不起作用。此外,这也不起作用,尽管它让您更接近(请注意换行):
copy (select typname, typlen, typinput, typoutput as "typoutput
" from pg_type limit 10) to stdout with csv header;最后,前两行代码如下所示:
typname,typlen,typinput,"typoutput
"这是不太正确的。
您只需要在您的特定环境中修补如何添加换行符,但希望这里有足够的信息来开始。
发布于 2013-01-08 14:01:58
不,没有。在后处理输出的脚本中这样做。PostgreSQL的COPY不应该产生打印得漂亮的可读性输出,它是用来产生可靠的、一致的输出的。
https://stackoverflow.com/questions/14209061
复制相似问题