psql => COPY :: Relation >> xxx << existiert nicht.

Hallo,

ich habe ein Riesenproblem und zwar verzweifel ich an einem eigentlich simplen Task.

Und zwar möchte ich eine CSV Datei in eine PostGres Datenbank laden.

  • Bei psql eingeloggt als Postgres bin ich.
  • Die Datenbank existiert.
  • Die Tabelle existiert & die Daten liegen in der CSV im richtigen Format

Dann habe ich folgendes eingegeben :

postgres=#
postgres=# COPY "verzeichnissDB"."bs_verz_load_1" FROM 'D:/BS-tab.csv';
FEHLER:  Schema »verzeichnissDB« existiert nicht
postgres=# COPY "public"."bs_verz_load_1" FROM 'D:/BS-tab.csv';
FEHLER:  Relation »public.bs_verz_load_1« existiert nicht
postgres=# COPY "public"."verzeichnissDB"."bs_verz_load_1" FROM 'D:/BS-tab.csv';

FEHLER:  Verweise auf andere Datenbanken sind nicht implementiert: »public.verzeichnissDB.bs_verz_load_1«

postgres=# \i need help

Ich habe es mit “public”.“bs_verz_load_1” versucht, mit “public”.“verzeichnissDB”.“bs_verz_load_1” , mit “verzeichnissDB”.“bs_verz_load_1”

In einem anderen Thread habe ich gelesen das man sich mit “\dt” die Relationen anzeigen lassen kann. Da kommt dann bei mir “Keine Relationen gefunden”.

 postgres=# \dt
Keine Relationen gefunden

Ich verstehe die Debug Information auch nicht wirklich, habe woanders auch gelesen das Postgres mit “Relation existiert nicht” antwortet, wenn die Tabelle nicht existiert, was aber hier nicht der Fall ist.

Ich hoffe jemand kann mir helfen. Wenn ihr noch mehr Infos braucht, einfach Bescheid sagen. Entschuldigt wenn die Frage erfahrene Benutzer zum Schmunzeln bringt, aber jeder hat mal klein angefangen :wink: .

MfG Shitake.

Gibt es das Schema “verzeichnissDB”?

Andreas

Nein das gibt es nicht , die Datenbank heisst “verzeichnissDB” die Tabelle “bs_verz_load_1” und das Schema was drüber steht heisst public.

Ich bin jetzt auf der Arbeit und hab einen Screenshot zur Veranschaulichung gemacht.

EDIT:
so wie ich das verstanden habe muss der Befehl doch lauten:

COPY tabellenname FROM ‘D:/datei.csv’ DELIMITER AS ‘,’ ; also in meinem Fall ja dann : COPY bs_verzeichnis_load_1 FROM ‘D:/datei.csv’ DELIMITER AS ‘,’ ;
Dieser Befehl bringt mir jedoch die Fehlermeldung das die Relation nicht existiert. Das würd ich so verstehen das nicht klar ist, welche Relation ‘bs_verz_load_1’ zu einer Datenbank hat. Also würd ich auf ‘verzeichnissDB.bs_verz_load_1’ kommen, das jedoch funktioniert auch nicht.

Ich habe mir das mit den Schemen in Postgres angeschaut, jedoch nicht wirklich verstanden. Von daher steh ich hier wirklich auf dem Schlauch. Danke.

Hey,

da du dich bei psql ja schon mit angabe der db einloggst sollte das unnötig sein. hast du es mal mit:
COPY bs_verz_load_1 FROM ‘D:/BS-tab.csv’;

versucht?

FACEPALM Sorry Leute ich hab den Fehler gefunden.

Ich habe mich immer mit (haltet euch fest): “psql -U postgres” eingeloggt, anstatt mit ‘psql -d verzeichnissDB -U postgres’

Jetzt geht auch :COPY bs_verz_load_1 FROM ‘D:/BS-tab.csv’ DELIMITER ‘,’ ;

Woher Relationen finden oder kennen, wenn nichtmal eine Datenbank angegeben ist.
Jetzt erkennt er den Befehl, meckert aber über Syntaxfehler. Die sollten aber eher kein wirkliches Problem darstellen.

Thx.