将Postgres查询导出到同一个excel文件

时间:2015-06-02 17:50:39

标签: excel postgresql

我知道我可以使用以下命令将查询复制到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';

有没有办法做到这一点?

1 个答案:

答案 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