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

leo*_*ion 7 java csv postgresql

我目前正在 java 服务中使用 copyManager 从 psql 获取 csv 字符串。

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

但在结果字符串中,所有布尔值都是 as 't'/'f'。如何获取布尔值'true'or 'false'。我可以提供一些配置来做到这一点吗?

该表有很多列,因此如果我使用案例来更改它,我还必须指定我想避免的所有其他列。

Vao*_*sun 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)
Run Code Online (Sandbox Code Playgroud)

这是汤姆对此的想法