скопировать файл с указанным именем в указанное место - PullRequest
0 голосов
/ 05 апреля 2019

Я написал функцию, которая копирует файл в определенное место, но я пытаюсь внести некоторые изменения в эту функцию. Ниже функция копирует hire_date данные из таблицы в datafinal.csv файл.

Я пытаюсь добавить max (hire_date) к datafinal.csv имени файла.

Например: datafinal_20190302.csv

CREATE OR REPLACE FUNCTION exportfile_csv()
RETURNS integer as $$
declare rows integer;
BEGIN
    copy (select hire_date from mytable)
    to program 'cat > /data/backup/file_out/datafinal.csv'
    With CSV header;
    GET DIAGNOSTICS rows=ROW_COUNT;
    return rows;
END;
$$ LANGUAGE plpgsql;

1 Ответ

0 голосов
/ 05 апреля 2019

К сожалению, выражения, отличные от литералов, не будут работать для целевого пути. Но вы можете построить команду как строку и EXECUTE, как в:

EXECUTE 'COPY (SELECT hire_date FROM mytable) TO PROGRAM ''cat > /data/backup/file_out/datafinal_' || to_char(now(), 'YYYYMMDD') || '.csv'' WITH CSV HEADER;';

И вам, вероятно, не нужен cat объезд, просто

EXECUTE 'COPY (SELECT hire_date FROM mytable) TO ''/data/backup/file_out/datafinal_' || to_char(now(), 'YYYYMMDD') || '.csv'' WITH CSV HEADER;';

должно работать.

...