Syntaxfehler

Fragen und Probleme rund um die Abfragespache SQL.
Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 08:29

Hallo,
ich versuche Datensätze aus einem CSV in eine Tabelle per Kommandozeile zu übertragen. Ich habe diverse Varianten durch, keine will mir gelingen.
Eine Variation meiner Versuche ist diese:

Code: Alles auswählen

postgres=# \c Buch2019
You are now connected to database "Buch2019" as user "postgres".
Buch2019=# copy umsaetze from \home\u.csv;
Invalid command \home. Try \? for help.
Buch2019-# copy umsaetze from '\home\u.csv';
ERROR:  syntax error at or near "copy"
LINE 2: copy umsaetze from '\home\u.csv';
        ^
Kann mir da jemand den richtigen Weg weisen `?

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Syntaxfehler

Beitrag von akretschmer » Mi 20. Nov 2019, 08:45

copy umsaetze from '/home/u.csv';
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Syntaxfehler

Beitrag von akretschmer » Mi 20. Nov 2019, 08:46

Code: Alles auswählen

test=# select * from foo;
test=*# copy foo to '/tmp/foo.csv';
COPY 1000000
test=*# delete from foo;
DELETE 1000000
test=*# copy foo from '/tmp/foo.csv';
COPY 1000000
test=*# 

works for me.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Re: Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 08:52

Ok, die backslashs sind falsch, das habe ich gerade auch festgestellt.
Kann ich dem Befehl mitteilen, dass die erste Zeile des CSV's die Feldnamen beinhaltet ?

Die erste Spalte in der TAbelle ist als PK festgelegt mit einem Autoincrement.
Wie bringe ich das dem Copy bei, dass der Wert Kontobezeichnung, nicht in das Feld ID zu schreiben ist.

Code: Alles auswählen

ERROR:  invalid input syntax for integer: "DE1762050000....

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Syntaxfehler

Beitrag von akretschmer » Mi 20. Nov 2019, 09:17

  • Doku lesen
  • CSV HEADER
  • Du kannst angeben, in welche Spalten gelesen werden soll
  • siehe erster Punkt
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Re: Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 10:08

ja da hast du recht, ich sollte mich da näher einlesen. Meistens nutze ich auch die Doku, um die Dinge nachzulesen.
Manchmal hat man auch ein Brett vorm Kopf -> siehe Backslah anstelle der Slashs.
Manchmal ist es aber auch sehr angenehm Antworten von erfahrenen Usern zu bekommen, das spart oft Zeit und Probierei.

Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Re: Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 19:58

Momentan bin ich soweit:
Buch2019=# copy umsaetze (auftragskonto, buchungstag, valutadatum, buchungstext, verwendungstext, beguenstigter_zahlungspflichtiger, kontonummer, blz, betrag, waehrung,info) from '/home/u.csv' csv header delimiter ';';
ERROR: invalid input syntax for type numeric: "-9,48"
Ich nehme an, dass PostgresSql den Punkt anstelle des KOmmas im Betrag erwartet.
Wie löse ich das ?

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Syntaxfehler

Beitrag von akretschmer » Mi 20. Nov 2019, 20:20

als workaround könntest Du eine Tabelle mit ähnlicher Struktur erstellen, aber für diese Spalte TEXT verwenden. Dann machst Du ein

insert into ziel select to_number(...) from import_table;

(jetzt verkürzt, die anderen Spalten natürlich auch). Nachteil: doppelte Arbeit, doppelter Speicherverbrauch.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Re: Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 21:22

mühsam ernährt sich das Eichhörnchen.
Ich habe den Datentyp auf "money" umgestellt und dann ging es (fast )...

ERROR: invalid byte sequence for encoding "UTF8": 0xfc
CONTEXT: COPY umsaetze, line 22
muss ich mal schauen was in line 22 steht :-(

Edit: er stört sich am "ü"...

Bitflight
Benutzer
Beiträge: 33
Registriert: Mi 1. Feb 2012, 23:05

Re: Syntaxfehler

Beitrag von Bitflight » Mi 20. Nov 2019, 21:53

is ja echt ätzend...

Antworten