我正在使用PostgreSql
数据库。我想从数据库中选择一些数据并将其复制到一个csv文件中。以下是实现方法:
\COPY (SELECT * from table) TO '/csv_dir/csv_file.csv';
我的问题是只有在整个命令都在一行时才能按预期工作。我该如何将COPY命令写成多行?以下是我想要分成多行的SQL代码。
我正在使用PostgreSql
数据库。我想从数据库中选择一些数据并将其复制到一个csv文件中。以下是实现方法:
\COPY (SELECT * from table) TO '/csv_dir/csv_file.csv';
我的问题是只有在整个命令都在一行时才能按预期工作。我该如何将COPY命令写成多行?以下是我想要分成多行的SQL代码。
psql
的内部命令,像其他以反斜杠开头的命令一样,\copy
必须放在一行上。COPY
替代 \COPY
,将其输出重定向到 STDOUT,并将此 stdout
重定向到文件。例如:$ psql -At -d test <<EOQ >outfile
COPY
(select 1,2
union
select 3,4)
TO STDOUT;
EOQ
结果:
$ cat outfile 1 2 3 4
如果您已经在psql会话中,并且这个COPY命令必须存在于其他命令中,也可以通过以下序列实现:
test=> \t 只显示元组。 test=> \o outfile test=> copy test-> (select 1,2 test(> union test(> select 3,4) test-> to stdout; test=> \o test=> \t 关闭只显示元组选项。
\ o outfile
开始将输出捕获到文件中,\ o
无参数结束它。