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.