这是"Save PL/pgSQL output from PostgreSQL to a CSV file"中this answer的后续问题.

我需要使用psql的\copy command编写一个客户端CSV文件.一个班轮工作:

db=> \copy (select 1 AS foo) to 'bar.csv' csv header
COPY 1

然而,我有跨越几行的长查询.我不需要显示查询,因为我似乎无法在没有解析错误的情况下扩展这一行:

db=> \copy (
\copy: parse error at end of line
db=> \copy ( \\
\copy: parse error at end of line
db=> \copy ("
\copy: parse error at end of line
db=> \copy "(
\copy: parse error at end of line
db=> \copy \\
\copy: parse error at end of line

是否可以将\copy用于跨多行的查询?我在Windows上使用psql.

推荐答案

我现在的工作解决方案是create a temporary view,它可以在多行中声明,然后在\copy命令中从中 Select ,它可以轻松地放在一行中.

db=> CREATE TEMP VIEW v1 AS
db->   SELECT i
db->   FROM generate_series(1, 2) AS i;
CREATE VIEW
db=> \cd /path/to/a/really/deep/directory/structure/on/client
db=> \copy (SELECT * FROM v1) TO 'out.csv' csv header
COPY 2
db=> DROP VIEW v1;
DROP VIEW

Postgresql相关问答推荐

如何将存储的、生成的列添加到非常大的表中?

可以向判断枚举值的SQL列添加约束吗?

使函数内部动态插入更具可读性

让Docker Compose Container等待容器PostgreSQL并恢复

Postgres:这是对OVERLAPS谓词的等效重写吗?

如何准确确定边界附近的点和地理的 ST_Intersects(ST_Intersects geography vs. Geometry diffrepancy)

表示 SQL 表的 Go struct

包含受先前 DELETE 影响的行数的变量?

带有双引号的 postgresql COPY 和 CSV 数据

在 postgres 中Decode解码相似的函数

Rails 3:在 Postgres 支持的 ActiveRecord 中使用 json 作为列类型时出现迁移错误

PostgreSQL如何连接间隔值'2天'

PostgreSQL CASE 在函数中的使用

Postgres 删除表语法错误

如何为查询执行设置语句超时

PG::ConnectionBad FATAL:role "Myname" does not exist

python postgres 我可以 fetchall() 100 万行吗?

Postgres DB 上的整数超出范围

在 Flask-sqlalchemy 和 Postgresql 中使用 JSON 类型

pg_restore 目录错误