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.