I allmänhet fungerar variabelsubstitution med metakommandon (som börjar med snedstreck), men \copy
är ett undantag, som dokumenterats i psqls manpage
:
Jag håller inte med om @BaconBits kommentar till frågan som plpgsqls EXECUTE
kan vara svaret. En sats på serversidan, dynamisk eller på annat sätt, kommer inte åt klientsidans filsystem, i motsats till \copy
. Du kan använda COPY
istället, men den kräver att den är superanvändare och att filen ska vara tillgänglig för postgres
användare på servern.
Jag tror att det är \copy
från ett variabelfilnamn måste variabeln injiceras i skriptet före psql
läser den. Du kan integrera SQL-skriptet i ett skalskript och mata det till psql
som en lappbar här-sträng, eller filtrera den genom sed
eller perl
eller någon liknande unix-ish-metod.