2017-03-22 3 views
1

Mein Tisch,Postgres COPY ungültige Syntax für integer

 Table "public.product_status" 
Column |   Type   | Modifiers 
--------+-----------------------+----------- 
id  | integer    | not null 
code | character varying(10) | 
notes | text     | 

Erste Zeile meiner CSV-Datei,

1,S,blah blah blah 

Befehl Kopieren,

=# copy product_status from 'status_table.csv' with csv; 
ERROR: invalid input syntax for integer: "1" 
CONTEXT: COPY product_status, line 1, column id: "1" 

wirklich nicht verstehen, wie das ist, Ungültige Syntax für eine ganze Zahl! Auch Postgres mir zustimmen scheint,

=# insert into product_status values (1,'S','blah blah blah'); 
=# copy product_status to STDOUT with csv; 
1,S,blah blah blah 

Irgendwelche Ideen? Andere Fragen, die ich auf der Seite fand, schienen nicht auf alles anwendbar zu sein, was ich hier falsch gemacht habe.

Antwort

1

Am Anfang der Datei befindet sich wahrscheinlich ein “ unsichtbares Zeichen ”.

Untersuchen Sie den Inhalt; Wenn Sie sich unter UNIX befinden, könnten Sie od -c status_table.csv verwenden.

Es besteht die Möglichkeit, dass am Anfang der Datei ein unbrauchbarer byte order mark ist. Einfach entfernen.

+0

Danke Laurenz, ich hatte BOM in meiner Datei! –

+0

Danke - 'od -c' ist sehr nützlich! –

1

Ich hatte das gleiche Problem, und meine Antwort war die gleiche wie oben, eine "nutzlos byte order mark am Anfang der Datei." Hier ist, wie ich es entfernt habe.

1) Öffnen Sie die Datei in vim

vim file_with_bom.txt 

2) Stellen Sie die 'nobomb' Option

:set nobomb 

3) Speichern Sie die Datei und verlassen

:wq 

this helps !