К сожалению, выражения, отличные от литералов, не будут работать для целевого пути. Но вы можете построить команду как строку и 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;';
должно работать.