Seite 1 von 3

Syntaxfehler

Verfasst: Mi 20. Nov 2019, 08:29
von Bitflight
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 `?

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 08:45
von akretschmer
copy umsaetze from '/home/u.csv';

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 08:46
von akretschmer

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.

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 08:52
von Bitflight
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....

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 09:17
von akretschmer
  • Doku lesen
  • CSV HEADER
  • Du kannst angeben, in welche Spalten gelesen werden soll
  • siehe erster Punkt

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 10:08
von Bitflight
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.

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 19:58
von Bitflight
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 ?

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 20:20
von akretschmer
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.

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 21:22
von Bitflight
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 "ü"...

Re: Syntaxfehler

Verfasst: Mi 20. Nov 2019, 21:53
von Bitflight
is ja echt ätzend...