我想从shell(而不是交互式psql客户端)执行一个查询,并让它将输出的CSV或TSV表示形式打印到STDOUT.如何使用psql或其中一个PostgreSQL命令行工具来实现这一点?

推荐答案

如果您使用的是PostgreSQL 8.2或更新版本,请将其用于CSV:

psql -c "COPY (<select query>) TO STDOUT WITH CSV"

这是TSV,带有适当的空值:

psql -c "COPY (<select query>) TO STDOUT WITH NULL AS ''"

CSV表单将正确引用任何包含双引号字符的字段.有关复制的更多详细信息和选项,请参阅特定版本的PostgreSQL文档.

Postgresql相关问答推荐

创建发布性能

在同一 Select 列表中两次使用jsonb_arrayElements()是否安全?

在PostgreSQL中是否有与SQLite R*Tree类似功能?

为什么Postgres优化器切换到嵌套循环进行连接?

Postgres 11没有强制执行外键约束?

PostgreSQL:在 select 和 group by 中使用不同的列不会导致错误

INSERT 语句返回策略违规(USING 表达式)

Postgres 视图定义 (pgAdmin) 被删除了 comments ?

Postgres 查询指向国外数据工作者的分区表比直接查询 fdw 慢很多倍

PostgreSQL bytea 网络流量双倍预期值

无法从在 wsl 2 上运行的服务之一连接到在 wsl 2 上的容器中运行的 postgres 数据库

函数将多列作为单列而不是多列返回

从具有加权行概率的 PostgreSQL 表中 Select 随机行

Postgres中的GROUP BY - JSON数据类型不相等?

SQL - 提示引用列

如何判断 PostgreSQL 事务中的待处理操作

在 PostgreSQL 中的表上禁用 DELETE?

获取全文搜索配置语言的完整列表

解释结果中的Recheck Cond是什么意思?

在 PostgreSQL 中使用 CASE 一次影响多个列