Aufruf von /copy nur in einer Zeile?

Moin,
Ich bin gerade von Oracle zu PG gewechselt und habe gleich folgendes Problem:
Wenn ich versuche, folgenden Befehl abzusetzen:

\copy (select a.Feld1,e.Feld2
from DB.aufgabe a, DB.ergebnis e
where e.id_aufgabe = a.id
and a.status = ‘NEU’)
TO ‘./Ausgabe.txt’ with delimiter ‘;’ csv header;

kommt PG mit den Zeilen nach der ersten Zeile nicht klar (Parser-Fehler).

Wenn ich den ganzen Befehl in EINE Zeile schreibe, wird alles korrekt ausgeführt.
Gibt es evt. einen Schalter, der dieses Verhalten beinflußt? Meine Select-Befehle sind manchmal über 50 Zeilen lang.

Zusätzliche Infos:
Ich greife von einem Windows-PC auf einen Linux-Server zu
Ich habe kein Recht, das Server-COPY aufzurufen

Nein, das kann man leider nicht ändern. psql Kommandos (die, die mit \ beginnen) erlauben leider keinen Zeilumbruch.

Ein Workaround wäre für die Abfrage eine VIEW zu erstellen, dann verkürzt sich das auf select * from the_view und lässt sich auch in eine Zeile schreiben.

Gute Idee, klappt leider nicht:
ERROR: cannot copy from view “viewname”
TIP: Try the COPY (SELECT …) TO variant.

Laut Herrn Google kann der /copy-Befehl nur Tabellen oder Select-Befehle ausgeben. Dann muss ich wohl den Select-Befehl vorher in eine (temporäre) Tabelle umleiten.

Ich meinte auch:

\copy (select * from the_view) to ...

Dieser spanische Herr “Manual” hat aber auch noch einen Tip auf Lager:

Another way to obtain the same result as \copy ... to is to use the SQL COPY ... TO STDOUT command and terminate it with \g filename or \g |program. Unlike \copy, this method allows the command to span multiple lines; also, variable interpolation and backquote expansion can be used.

Wer lesen kann, ist im Vorteil - ja, so klappt es. Danke!
Den COPY-Befehl kann ich, wie schon in Ursprungsfrage angemerkt, nicht nutzen.

Gruß

Doch, wenn Du wie in dem Hinweis geschrieben wurde, COPY ... to STDOUT verwendest und die Ausgabe dann via \g filename umleitest

So klappt alles - Danke für Deine Mühe!

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.