sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué no puedo usar una variable en un comando de barra invertida de postgres (\ COPY)

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.