Wie kann ich in PostgreSQL von einer lokalen Datei in eine entfernte Datenbank kopieren? [geschlossen]

9

Ich bin ein Anfänger in psql und brauche etwas Hilfe. Wie kann ich eine lokale CSV in eine Remote-Datenbank laden?

Ich benutze den folgenden Befehl

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

Dadurch wird jedoch die Datei auf der Remote-Datenbank durchsucht, während dies auf meinem lokalen PC erforderlich ist.

user22149
quelle
4
\copyliest eine lokale Datei (es ist ein psqlBefehl und kann nur von innen verwendet werden psql). COPY(Beachten Sie jedoch das fehlende ``) liest die Datei auf dem Server.
a_horse_with_no_name
Also gibt es keinen Weg dazu? Ich muss die Datei auf den Remote-Server kopieren.
user22149
Gibt es einen Unterschied zwischen copy und \ copy? Entschuldigung, ich bin wirklich neu in psql nur wissen, Orakel dort kann ich dies ohne Probleme tun
user22149
Der Unterschied besteht darin, dass einer die Datei auf dem Server liest und der andere die Datei auf dem Client liest. Offensichtlich wird das Lesen der Datei auf dem Server schneller sein.
a_horse_with_no_name
1
@ user22149 Verwenden Sie eine Literal-Registerkarte oder E'\t'. Die Registerkarte sollte jedoch die Standardeinstellung sein, wenn Sie ohnehin kein Delim angeben.
Craig Ringer

Antworten:

5

Hier gibt es zwei Möglichkeiten.

  1. Wenn Sie psql verwenden, ist \ copy der richtige Weg, um die von Ihnen erwähnten Dinge zu tun.

  2. Wenn Sie ein von Ihnen erstelltes Client-Programm verwenden, müssen Sie dies tun

    COPY FROM STDIN.....

Geben Sie dann die Datei ein (siehe Dokumentation zum Befehl COPY) .

Der Befehl KOPIEREN ist ein etwas seltsames Tier. Dies ist der einzige Befehl, den PostgreSQL derzeit von Quel unterstützt. Daher ist er nicht standardisiert und basiert auf einem anderen Paradigma als die übrigen Befehle. Aus diesem Grund ist es wichtig, die Dokumente zu diesem Befehl relativ sorgfältig zu lesen.

Chris Travers
quelle