Generelt virker variabel substitution med meta-kommandoer (startende med omvendt skråstreg), men \copy er en undtagelse, som dokumenteret i psqls manpage
:
Jeg er uenig i @BaconBits kommentar til spørgsmålet om, at plpgsql's EXECUTE kunne være svaret. En serverside-sætning, dynamisk eller på anden måde, vil ikke få adgang til filsystemet på klientsiden, i modsætning til \copy . Du kan bruge COPY i stedet, men det kræver at den er superbruger, og at den fil er tilgængelig for postgres bruger på serveren.
Jeg tror, at \copy fra et variabelt filnavn skal variablen injiceres i scriptet før psql læser den. Du kan måske integrere SQL-scriptet i et shell-script og sende det til psql som en patchbar her-streng, eller filtrer den gennem sed eller perl eller en lignende unix-ish metode.