gpt4 book ai didi

postgresql - 使用双引号在 postgres 中输出到 CSV

转载 作者:行者123 更新时间:2023-11-29 11:18:25 25 4
gpt4 key购买 nike

尝试将查询的输出转储到自动化作业中的 CSV 文件中,但在列包含我的逗号分隔符的字段中遇到问题。由于这个特定网络的性质,我必须跳过几个环节才能完成工作,而且我很可能遗漏了一些非常明显的东西。

简而言之,我从使用 PLINK 通过 SSH 连接在另一个机器上运行远程 psql 命令的客户端机器启动我的脚本。该 psql 命令正在访问第三台机器上的 Postgres 服务器(我无法直接从客户端连接到数据库,因此中间需要额外的步骤)。

如果我从客户端手动 SSH 到服务器 1,连接到 Postgres 框,并使用\copy... 和 CSV header ,创建的文件是完美的,任何包含逗号的字段都会自动用双引号括起来.

但是,如果我尝试在单个命令中发出\copy(或复制)命令,输出不包含那些双引号,所以我最终会遇到这样一种情况,即字段中的逗号被解释为分隔符后面一个。

换句话说,这有必要的双引号:

  1. 从客户端到服务器 1 的 SSH。
  2. psql -Uuser -h server2 数据库
  3. \copy (select ...) to '~/myfile.csv' with CSV header;

但不会:

  1. 从客户端到服务器 1 的 SSH
  2. psql -Uuser -h server2 database -c "\copy (select ...) to '~/myfile.csv' with CSV header;"

最佳答案

使用FORCE_QUOTE

方法如下:

psql -U user -h server2 database -c "\copy (select ...) to '~/myfile.csv' WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *);"

COPY 命令 documentation

关于postgresql - 使用双引号在 postgres 中输出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com