PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Perché non posso usare una variabile in un comando barra rovesciata postgres (\COPIA)

In generale, la sostituzione delle variabili funziona con i meta-comandi (che iniziano con la barra rovesciata), ma \copy è un'eccezione, come documentato nella manpage di psql :

Non sono d'accordo con il commento di @BaconBits alla domanda che EXECUTE di plpgsql potrebbe essere la risposta. Un'istruzione lato server, dinamica o meno, non accederà al file system lato client, contrariamente a \copy . Puoi usare COPY invece, ma richiede di essere superutente e quel file per essere accessibile a postgres utente sul server.

Credo che \copy da una variabile nomefile, la variabile deve essere iniettata nello script prima di psql lo legge. Potresti integrare lo script SQL in uno script di shell e inviarlo a psql come stringa here patchabile, oppure filtrala tramite sed o perl o qualsiasi metodo unix-ish simile.