PostgreSQL:从EXECUTE输出导出到csv数据

时间:2019-04-12 16:32:00

标签: sql postgresql postgresql-copy

我正在尝试在csv文件中导出一些汇总数据。我想使用postgresql的命令COPY,就像下面的代码一样,但是我正在从EXECUTE命令获取数据,该命令将返回动态表。 COPY命令仅从表中获取数据,但是我无法将结果保存到临时表中,因为我不知道执行查询将生成的列数。另外,我正在尝试保存大数据集,并且避免在中间表中重复它。有人知道任何解决方法吗?

CREATE OR REPLACE FUNCTION ExportSnapshotToCsv(qe TEXT)
 RETURNS void AS $$
BEGIN
 COPY (Execute qe) To '/tmp/test.csv' With CSV DELIMITER ',';
END; $$
LANGUAGE plpgsql;

1 个答案:

答案 0 :(得分:1)

使用EXECUTE format

DO
$$
DECLARE
   myfile text := '/tmp/test.csv';
BEGIN

      EXECUTE format('COPY (
         SELECT * from %I
         ) TO ''%s'';'
       , 'employees',myfile);
 END 
$$;