sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor kan jeg ikke bruge en variabel i en postgres backslash-kommando (\COPY)

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.




  1. Simple Encrypted Arithmetic Library (SEAL) og segl::Ciphertext-variablen

  2. Kapacitetsplanlægning ved hjælp af ydeevnedata

  3. Hvordan nulstiller jeg sekvensnumre, så de bliver fortløbende?

  4. At få betinget tæller videre til samme række i MySQL / SQL