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.