0

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

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

4

2 回答 2

4

不,没有。在后处理输出的脚本中执行此操作。PostgreSQLCOPY不应该产生打印精美的可读输出,它可以产生可靠、一致的输出。

于 2013-01-08T06:01:58.413 回答
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
"

这不太正确。

您只需要在您的特定环境中修改如何添加换行符,但希望这里有足够的信息可以开始。

于 2013-01-08T18:10:36.553 回答