【问题标题】:PostgreSQL COPY command - how to write query in more than one linePostgreSQL COPY 命令 - 如何在多行中编写查询
【发布时间】:2014-05-24 05:27:06
【问题描述】:

我正在使用PostgreSql 数据库。我想从数据库中选择一些数据并将其复制到 csv 文件中。这有效:

\COPY (SELECT * from table) TO '/csv_dir/csv_file.csv';

我的问题是它仅在整个命令仅在一行中时才有效。如何在多行中编写 COPY 命令?这个 sql 是我想放入更多行的内容。

【问题讨论】:

标签: postgresql copy psql


【解决方案1】:

作为psql 的内部命令,与其他以反斜杠开头的命令一样,\copy 必须占一行。

我认为您的目的是粘贴带有换行符的长查询,而无需对其进行编辑。

您可以使用COPY 代替\COPY,将其输出重定向到STDOUT,并将此stdout 重定向到文件。示例:

$ psql -At -d test <<EOQ >outfile
COPY
 (select 1,2
  union
  select 3,4)
TO STDOUT;
EOQ

结果:

$ cat 输出文件 1 2 3 4

如果你已经在一个 psql 会话中并且这个 COPY 必须存在于其他命令中,也可以通过这个序列来实现:

测试=> \t 只显示元组。 测试=> \o 输出文件 测试=> 复制 测试->(选择 1,2 测试(>联合 测试(> 选择 3,4) 测试-> 到标准输出; 测试=> \o 测试=> \t 仅元组已关闭。

\o outfile 开始将输出捕获到文件中,\o 不带参数结束它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2010-10-10
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多