将psql结果以正确的布尔值导出到csv

7

我目前正在使用Java服务中的CopyManager从psql获取csv字符串。


String selectQuery = "SELECT * FROM table";
copyManager.copyOut("COPY (" + selectQuery + ") TO STDOUT WITH CSV HEADER", csaString);

但是在生成的字符串中,所有布尔值都表示为't'/'f'。我该如何将布尔值表示为'true'或者'false'呢?是否有一些配置可以做到这一点?

这个表格有很多列,所以如果我使用CASE语句来更改它,我还必须指定其他所有列,而我想避免这种情况。


你不需要使用 case - 只需将布尔列转换为文本即可。但你仍然需要列出列名。 - Vao Tsun
有没有一种方法可以将所有列转换为文本? - leoOrion
没有,我脑海中一片空白 - Vao Tsun
1个回答

5
很抱歉,这方面没有配置。最好的方法是将布尔列转换为文本。当然,您必须列出列...

例如:

db=# select *,is_dst::text from pg_timezone_names limit 1;
      name      | abbrev | utc_offset | is_dst | is_dst
----------------+--------+------------+--------+--------
 Africa/Abidjan | GMT    | 00:00:00   | f      | false
(1 row)

这里是Tom对此的看法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接