我知道我可以使用以下命令将查询复制到csv文件:
COPY (
SELECT * FROM my_table
) TO '/tmp/myfile.csv' CSV HEADER DELIMITER E'\t';
但是我需要将多个查询导出到同一个csv文件,例如:
COPY (
(SELECT * FROM my_table) AS tab1
(SELECT * FROM my_table2) AS tab2
(SELECT * FROM my_table3) AS tab3
(SELECT * FROM my_table4) AS tabN
) TO '/tmp/myfile.csv' CSV HEADER DELIMITER E'\t';
有没有办法做到这一点?
答案 0 :(得分:0)
只要从每个语句中选择相同的列类型,就可以对所有select语句执行联合,就像这样。如果cola和colc不是同一类型,则将其强制转换为相同类型。如果字段较少,请选择静态值,如0,NULL或类似值。
COPY (
(SELECT cola, colb FROM my_table1) AS tab1
UNION ALL
(SELECT colc, cold FROM my_table2) AS tab2
) TO '/tmp/myfile.csv' CSV HEADER DELIMITER E'\t';
或者,您可以导出到2个文件并合并它们。使用您的代码导出到/tmp/myfile1.csv
和/tmp/myfile2.csv
然后:
cat /tmp/myfile1.csv /tmp/myfile2.csv >/tmp/combined.csv