Im Allgemeinen funktioniert die Variablenersetzung mit Meta-Befehlen (beginnend mit Backslash), aber \copy
ist eine Ausnahme, wie in der Manpage
von psql dokumentiert :
Ich stimme @BaconBits Kommentar zu der Frage nicht zu, dass plpgsqls EXECUTE
könnte die Antwort sein. Eine serverseitige Anweisung, ob dynamisch oder nicht, greift im Gegensatz zu \copy
nicht auf das clientseitige Dateisystem zu . Sie können COPY
verwenden stattdessen, aber es erfordert Superuser und diese Datei muss für postgres
zugänglich sein Benutzer auf dem Server.
Ich glaube das zu \copy
aus einem variablen Dateinamen muss die Variable vor psql
in das Skript eingefügt werden liest es. Sie könnten das SQL-Skript in ein Shell-Skript integrieren und es an psql
übergeben als patchbarer Here-String, oder filtern Sie ihn durch sed
oder perl
oder eine ähnliche Unix-artige Methode.