1

我正在尝试在 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;
4

1 回答 1

1

采用EXECUTE format

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

      EXECUTE format('COPY (
         SELECT * from %I
         ) TO ''%s'';'
       , 'employees',myfile);
 END 
$$;
于 2019-04-12T16:45:18.797 回答