Postgres KOPIEREN VON csv-Datei - Keine solche Datei oder Verzeichnis
Ich versuche zu importieren, eine (ziemlich große) .txt Datei in eine Tabelle geonames in PostgreSQL 9.1. Ich bin in der /~ - Verzeichnis von meinem server eine Datei namens US.txt platziert in diesem Verzeichnis. Ich habe die search_path
variable zu geochat, der name der Datenbank, ich arbeite in. Ich dann geben Sie diese Abfrage:
COPY geonames
FROM 'US.txt',
DELIMITER E'\t',
NULL 'NULL');
Ich dann diese Fehlermeldung erhalten:
ERROR: could not open file "US.txt" for reading: No such file or directory.
Muss ich den Typ in \i US.txt
oder etwas ähnliches erste, oder sollte es einfach Holen Sie es aus dem gegenwärtigen Arbeitsverzeichnis?
InformationsquelleAutor nerdenator | 2013-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Missverständnisse:
1.
Gibt es kein Verzeichnis
/~
. Es ist entweder/
(root-Verzeichnis) oder~
(home-Verzeichnis des aktuellen Benutzers). Es ist auch irrelevant für das problem.2.
Den
search_path
nichts zu tun hat mit dem Namen der Datenbank. Es ist für schemas innerhalb der aktuellen Datenbank. Sie wahrscheinlich benötigen, um zurückzusetzen.3.
Sie sind erforderlich, um die absoluten Pfad für Ihre Datei. Wie dokumentiert in der Anleitung hier:
4.
TRENNZEICHEN: nur Lärm.
5.
NULL: Es ist eher ungewöhnlich, dass die tatsächlichen string
'NULL'
für eineNULL
Wert. Sind Sie sicher?Meine Vermutung (nach dem zurücksetzen
search_path
an - oder schema-Kennzeichnen Sie den Tabellennamen):An input file name can be an absolute or relative path
postgresql.org/docs/current/interactive/sql-copy.html Obwohl es ist wirklich scheint nicht zu funktionieren relative Pfade.InformationsquelleAutor Erwin Brandstetter
Vielleicht ein bisschen spät, aber hoffentlich nützlich:
\Kopieren, anstatt
https://wiki.postgresql.org/wiki/COPY
jvdw
InformationsquelleAutor jvdw
Die Pfade sind relativ zu den PostgreSQL-server, nicht die
psql
client.Vorausgesetzt, Sie laufen von PostgreSQL 9.4, können Sie
US.txt
im Verzeichnis/var/lib/postgresql/9.4/main/
.InformationsquelleAutor Masten SG
wenn Sie mit Ihrem COPY-Befehl aus einem Skript haben, können Sie einen Schritt in das Skript, das schafft den COPY-Befehl mit den korrekten absoluten Pfad.
können Sie dann ausführen dieser Teil in eine Datei, und führen Sie es
InformationsquelleAutor bodman