Copy und lokale (Windows) Datei

Hallo Wissende,
schon wieder bin ich unerwartet auf ein Problem gestoßen:

Mittels

COPY  tmp_imp FROM 'd:/tar/import.txt'  WITH DELIMITER ' ';
-- bzw.
COPY  tmp_imp to 'd:/tar/import.txt'  WITH DELIMITER ' ';

Importiere/Exportiere ich eine Textdatei.

In meiner Testumgebung lief der pgServer ja als “localhost”. Ja und jetzt wollte ich den richtigen Server nutzen :frowning: .

Die Datei für Copy wird (wohl) auf dem Rechner gesucht, wo der PGServer läuft.
Wie kann ich auf eine Datei am Client zugreifen?
Mit StdIn/StdOut kann ich in dem Zusammenhang nicht so recht was anfangen.

Vielen Dank für eure Mühe.

EDIT:
Erst denken dann fragen :schäm:.
Ich kann ja per “richtigem” (VB-Code) die Datei hinkopieren bzw. von dort holen.

Könnte man eigentlich das Tablespace-Verzeichnis dafür nutzen oder empfiehlt sich das nicht?

Aus der Hilfe von psql:

Input/Output
  \copy ...              perform SQL COPY with data stream to the client host

Andreas

Indem Du den psql Befehl \copy verwendest

Aus dem Handbuch:

COPY über stdin würde in etwa so aussehen:

COPY person (id, firstname, lastname) FROM stdin]Das ist das Format welches pg_dump erstellt.

Ihr antwortet ja schneller als ich denke :wink:

Hallo,
ich muss leider noch mal nachhaken.

Ich komme mit den Antworten trotz der Beispiele nicht so recht klar.

Ich starte im Moment über ADO folgenden SQL-Code:

COPY tmp_exp to 'd:/tar/export.txt'  WITH DELIMITER ' ';

Damit wird eine Datei auf dem Server der DB erzeugt.
Wie muss der Code lauten, dass die Datei am Clientrechner erzeugt wird.

\COPY tmp_exp to 'd:/tar/export.txt'  WITH DELIMITER ' ';

So einfach ist es ja doch nicht, denn das erzeugt ja einen Sysntaxfehler

Entschuldigung, aber irgendwie bin ich schwer von Begriff …

\copy statt copy

Allerdings ist die Syntax etwas anders: PostgreSQL: Documentation: 9.1: psql

Hallo,
danke für die schnelle Antwort. Aber ich vermute ich habe euch mein Problem noch nicht deutlich machen können.

Ich nutze ganz “normal” SQL-Abfrage über ADO (zum Testen im Moment im pgAdmin) und da kann ich nicht einfach ein Backslash voranstellen, denn das gibt Syntaxfehler.

Das hättest Du gleich sagen sollen. \copy ist ein Befehl in psql kein “richtiger” SQL Befehl.

Über eine Programmiersprache bleibt Dir entweder nur die Möglichkeit die Datei auf den Server zu kopieren oder eben mit COPY FROM STDIN zu arbeiten (falls das mit VBA geht - der JDBC Treiber z.B. unterstützt es nämlich nicht).

Hallo,
Dank für die schnelle Antwort.
Das hätte ich mir eigentlich denken müssen, dass das so nicht gehen kann.
Ich bin nur durch die vielen pSQL-Beispiele auf die falsche Spur gekommen.

Naja dann wird’s halt etwas “unschön”, denn ich denke nicht, dass ich per ODBC die Daten “transportieren” kann.

Gruß Steffen

Guten Morgen ihr fleißigen Helfer,
ich muss noch mal kurz nachhaken: [quote="“Steffen”]Könnte man eigentlich das Tablespace-Verzeichnis dafür nutzen oder empfiehlt sich das nicht?[/quote]Könnte ich in diesem Verzeichnis einen Unterordner erstellen und dort die temporären Dateien zum Datenaustausch lokaler Rechner/Server hinlegen oder komme ich da Postgres in die Quere?

Gruß Steffen