sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför kan jag inte använda en variabel i ett postgres backslash-kommando (\COPY)

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.




  1. Välj resultatuppsättning till en variabel och använd sedan variabeln i en uppdatering senare i samma lagrade procedur

  2. COUNT(*) från flera tabeller i MySQL

  3. Skiftlägesokänslig sökning i Oracle

  4. mySQL If-sats