我正在尝试在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;
答案 0 :(得分:1)
使用EXECUTE format
DO
$$
DECLARE
myfile text := '/tmp/test.csv';
BEGIN
EXECUTE format('COPY (
SELECT * from %I
) TO ''%s'';'
, 'employees',myfile);
END
$$;