En general, la sustitución de variables funciona con meta-comandos (comenzando con barra invertida), pero \copy
es una excepción, como se documenta en la manpage
de psql :
No estoy de acuerdo con el comentario de @BaconBits a la pregunta de que EXECUTE
de plpgsql podría ser la respuesta. Una declaración del lado del servidor, dinámica o de otro tipo, no accederá al sistema de archivos del lado del cliente, al contrario de \copy
. Puede usar COPY
en cambio, pero requiere ser superusuario y que el archivo sea accesible para postgres
usuario en el servidor.
Creo que para \copy
desde un nombre de archivo variable, la variable debe inyectarse en el script antes de psql
lo lee Puede integrar el script SQL en un script de shell y enviarlo a psql
como una cadena aquí parcheable, o filtrarla a través de sed
o perl
o cualquier método unix-ish similar.