Postgresql: экспорт в CSV-данные из вывода EXECUTE - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь экспортировать некоторые агрегированные данные в CSV-файл.Я хочу использовать команду COPY для postgresql, как в приведенном ниже коде, но я получаю данные из команды 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 Ответ

1 голос
/ 12 апреля 2019

Использование EXECUTE format

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

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