Import von CSV und Komma in string-Werte
Verwende ich postgres 8.4 und derzeit versucht, zu importieren einer trivialen CSV:
Hier ist eine Tabelle:
CREATE TABLE public.sample (
a VARCHAR,
b VARCHAR
) WITHOUT OIDS;
und hier ist eine csv-Datei Beispiel:
"foo","bar, baz"
Die Abfrage
COPY sample FROM '/tmp/sample.csv' USING DELIMITERS ',';
erwartet, wirft
ERROR: extra data after last expected column
CONTEXT: COPY sample, line 1: ""foo","bar, baz""
Aber naja, CSV-parsing ist kein Hexenwerk und ich würde mich Wundern, wenn es nicht möglich ist, zu lösen, ohne Neuformatierung der Quell-csv.
Irgendwelche Ideen?
PS: die csv kommt von 3rd-party-ich kann nicht das format ändern.
PPS: ja, ich verstehen, ich konnte pre-Prozess (änderung der Trennzeichen manuell), bevor ich es importieren
Endgültige Lösung:
COPY sample FROM '/tmp/sample.csv' WITH DELIMITER ',' CSV;
Ursprünglich entnommen https://stackoverflow.com/a/9682174/251311 und Dokumentation Seite ist http://www.postgresql.org/docs/8.4/static/sql-copy.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klar, Sie haben eine CSV-Datei, während Sie versuchen, importieren Sie Sie als text-format. Verwendung:
Die Standard-Trennzeichen für das CSV-format wird das Komma (
,
) sowieso. Mehr in der Anleitung. Syntax ist für die aktuelle version 9.1. Für PostgreSQL 8.4:COPY sample FROM '/tmp/sample.csv' WITH FORMAT (CSV, DELIMITER ',', NULL ' ');