我目前正在使用 Postgresql 中的复制命令将 sql 查询的结果输出到带有标题的 CSV 文件。我想要做的是在标题和 CSV 数据的开头之间添加一个换行符,以便它更具可读性。
是否有一种简单的方法可以通过更改我的查询来做到这一点?谢谢你的帮助!
我目前正在使用 Postgresql 中的复制命令将 sql 查询的结果输出到带有标题的 CSV 文件。我想要做的是在标题和 CSV 数据的开头之间添加一个换行符,以便它更具可读性。
是否有一种简单的方法可以通过更改我的查询来做到这一点?谢谢你的帮助!
不,没有。在后处理输出的脚本中执行此操作。PostgreSQLCOPY
不应该产生打印精美的可读输出,它可以产生可靠、一致的输出。
实际上,这是可能的,尽管它有点小技巧:
使用查询中的 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
"
这不太正确。
您只需要在您的特定环境中修改如何添加换行符,但希望这里有足够的信息可以开始。