Postgresql:从 EXECUTE 输出导出到 csv 数据
Postgresql: Export to csv data from EXECUTE output
我正在尝试将一些汇总数据导出到 csv 文件中。我想使用 postgresql 的命令 COPY,就像下面的代码一样,但是我从 EXECUTE 命令获取数据,该命令将 return 动态 table。 COPY 命令仅从 table 获取数据,但我无法将结果保存在临时 table 中,因为我不知道执行查询将生成的列数。另外,我正在尝试保存大型数据集,我会避免在中间 tables 中复制它。有人知道这方面的解决方法吗?
CREATE OR REPLACE FUNCTION ExportSnapshotToCsv(qe TEXT)
RETURNS void AS $$
BEGIN
COPY (Execute qe) To '/tmp/test.csv' With CSV DELIMITER ',';
END; $$
LANGUAGE plpgsql;
使用EXECUTE format
DO
$$
DECLARE
myfile text := '/tmp/test.csv';
BEGIN
EXECUTE format('COPY (
SELECT * from %I
) TO ''%s'';'
, 'employees',myfile);
END
$$;
我正在尝试将一些汇总数据导出到 csv 文件中。我想使用 postgresql 的命令 COPY,就像下面的代码一样,但是我从 EXECUTE 命令获取数据,该命令将 return 动态 table。 COPY 命令仅从 table 获取数据,但我无法将结果保存在临时 table 中,因为我不知道执行查询将生成的列数。另外,我正在尝试保存大型数据集,我会避免在中间 tables 中复制它。有人知道这方面的解决方法吗?
CREATE OR REPLACE FUNCTION ExportSnapshotToCsv(qe TEXT)
RETURNS void AS $$
BEGIN
COPY (Execute qe) To '/tmp/test.csv' With CSV DELIMITER ',';
END; $$
LANGUAGE plpgsql;
使用EXECUTE format
DO
$$
DECLARE
myfile text := '/tmp/test.csv';
BEGIN
EXECUTE format('COPY (
SELECT * from %I
) TO ''%s'';'
, 'employees',myfile);
END
$$;