Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL COPY命令-如何在多行中写入查询_Postgresql_Copy_Psql - Fatal编程技术网

PostgreSQL COPY命令-如何在多行中写入查询

PostgreSQL COPY命令-如何在多行中写入查询,postgresql,copy,psql,Postgresql,Copy,Psql,我正在使用PostgreSql数据库。我想从数据库中选择一些数据,并将其复制到一个csv文件中。这是有效的: \COPY (SELECT * from table) TO '/csv_dir/csv_file.csv'; 我的问题是,只有当整个命令仅在一行中时,它才起作用。如何在多行中写入复制命令?这个sql是我想放在更多行中的。作为psql的内部命令,和其他以反斜杠开头的命令一样,\copy必须放在一行中 我认为您的目的是粘贴一个带有换行符的长查询,而不必编辑它 您可以使用COPY而不是\C

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

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

我的问题是,只有当整个命令仅在一行中时,它才起作用。如何在多行中写入复制命令?这个sql是我想放在更多行中的。

作为
psql
的内部命令,和其他以反斜杠开头的命令一样,
\copy
必须放在一行中

我认为您的目的是粘贴一个带有换行符的长查询,而不必编辑它

您可以使用
COPY
而不是
\COPY
,将其输出重定向到STDOUT,并将此
STDOUT
重定向到文件。例如:

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

$psql-At-d测试您似乎正在从psql控制台运行此查询。为此使用PgAgent客户端我更喜欢这个答案
$ cat outfile
1   2
3   4
test=> \t
Showing only tuples.
test=> \o outfile
test=> copy
test->  (select 1,2
test(> union
test(> select 3,4)
test-> to stdout;
test=> \o
test=> \t
Tuples only is off.