Ich habe CSV-Dateien, Tab-getrennt, Felder nicht in Anführungszeichen verpackt, wo Felddaten Zeichen wie einfache Anführungszeichen, doppelte Anführungszeichen, Pipes und Backslashes enthalten können.Kann die Angebotsverarbeitung im Postgres COPY-Befehl im CSV-Format deaktiviert werden?
Beispieldaten können wie folgt aussehen:
1 2 "ba$aR\eR\ 18
ich diese Daten in Postgres mit der COPY-Anweisung importiert werden soll.
Wenn ich versuche, diese
COPY <tablename> FROM <filename> NULL AS '';
ich psql:-:1: ERROR: missing data for column
einen Fehler mit zu importieren, da Postgres den Backslash + Tab behandelt als „Tab entkommen“ anstelle eines Schrägstrich durch die Feldtrenn gefolgt. Also wechselte
ich das „CSV-Format“ des COPY-Operators, etwa so:
COPY <tablename> FROM <filename> WITH CSV DELIMITER E'\t' NULL AS '';
Jetzt gibt es einen neuen Fehler psql:-:1: ERROR: value too long for type character varying(254)
Offenbar, weil es die doppelten Anführungszeichen zu Beginn der Interpretation von Feld 3 als Feldumbruchzeichen.
Wie kann ich angeben, dass meine Daten NICHT überhaupt zitiert werden?
warum schreiben nicht Ihre Abhilfe als Antwort? –
danke für den Tipp, fertig! –
Mögliches Duplikat von [Ignoriere Anführungszeichen beim Importieren einer CSV-Datei in PostgreSQL?] (Http://stackoverflow.com/questions/7376322/ignore-quotation-marks-when-importing-a-csv-file-into-postgresql) –