作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 postgres 中使用 COPY TO 将 select 语句的结果写入文件中。这是我的代码:
COPY (SELECT COALESCE(AG.AGOF_CODIGO, 0) ||E'\t'||
cast('AGENDA' as varchar) ||E'\t'||
regexp_replace(RTRIM(LTRIM(COALESCE(AG.AGOF_DESCRICAO, ' '))), E'[\\n\\r\\u2028]+', ' ', 'g' ) ||E'\t'||
regexp_replace(RTRIM(LTRIM(COALESCE(AG.AGOF_DESCRICAO, ' '))), E'[\\n\\r\\u2028]+', ' ', 'g' ) ||E'\t'||
COALESCE(TO_CHAR(AG.AGOF_DATAI, 'YYYY-MM-DD"T"HH24:MI:SSOF'), cast(' ' as varchar)) ||E'\t'||
COALESCE(TO_CHAR(AG.AGOF_DATAF, 'YYYY-MM-DD"T"HH24:MI:SSOF'), cast(' ' as varchar)) ||E'\t'||
(CASE WHEN AG.AGOF_SIT = '1' THEN (CASE WHEN CURRENT_DATE BETWEEN AGOF_DATAI AND AGOF_DATAF THEN '1' ELSE '0' END) ELSE '0' END) ||E'\t'||
STRING_AGG(CAST(PR.PRAG_PROD_CODIGO AS VARCHAR), ',') ||E'\t'||
STRING_AGG(CAST(PR.PRAG_PRECOOFERTA AS VARCHAR), ',') as LAYOUT_1309
FROM AGOF AG
INNER JOIN PRAGOF PR ON PR.PRAG_AGOF_CODIGO = AG.AGOF_CODIGO
INNER JOIN PRODUTOS PRD ON PRD.PROD_CODIGO = PR.PRAG_PROD_CODIGO
WHERE AG.AGOF_DIVULGACAO NOT IN ('a8')
GROUP BY AG.AGOF_CODIGO, AG.AGOF_DESCRICAO, AG.AGOF_DESCRICAO, AG.AGOF_DATAI, AG.AGOF_DATAF, (CASE WHEN AG.AGOF_SIT = '1' THEN (CASE WHEN CURRENT_DATE BETWEEN AGOF_DATAI AND AGOF_DATAF THEN '1' ELSE '0' END) ELSE '0' END)) TO '/home/postgres/RETAIL_PROMOTION_1309_000_AAAAMMDD.TSV' WITH CSV ESCAPE E'\t' ENCODING 'UTF-8'
但是,如果语句 STRING_AGG(CAST(PR.PRAG_PROD_CODIGO AS VARCHAR), ',')
返回超过 1 个结果,用逗号分隔,生成的文件用双引号括起来。我不能用 nothing 替换它,这是一个结果示例:
5638004 AGENDA 224189
"5641004 AGENDA 78166,4076,69914,18998,20052,20389,24863,26995,91621,25927,3052,4998,5988,13226,27957,17470"
5658004 AGENDA 31313
"5668004 AGENDA 12478,2157,841547,14587,4589"
5678004 AGENDA 87125
5688004 AGENDA 224189
如何在 postgres 中不加双引号。
最佳答案
PostgreSQL 必须转义包含带引号的分隔符的字符串,否则文件将不是有效的 CSV。
你有两个选择:
使用不同于 ,
的字符作为 string_agg
的第二个参数。
对 CSV 格式的 COPY
使用不同的 DELIMITER
字符。
那么 PostgreSQL 就不必添加引号了。
关于sql - 在 PostgreSQL 中使用 COPY TO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116175/
我是一名优秀的程序员,十分优秀!