将具有指定名称的文件复制到特定位置

时间:2019-04-04 22:00:31

标签: sql postgresql plpgsql

我编写了一个将文件复制到特定位置的函数,但是我试图对该函数进行一些调整。下面的函数将表中的 hire_date 数据复制到 datafinal.csv < / strong>文件。

我正在尝试将 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 :(得分:0)

不幸的是,除了文字之外的其他表达式都不适用于目标路径。但是您可以将命令构建为字符串,然后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;';

应该工作。