Sie können die Fehler nicht überspringen, ohne den gesamten Befehl bis einschließlich Postgres 14 zu überspringen. Es gibt derzeit keine ausgefeiltere Fehlerbehandlung.
\copy
ist nur ein Wrapper um SQL COPY
die Ergebnisse durch psql kanalisiert. Das Handbuch für COPY
:
COPY
stoppt den Betrieb beim ersten Fehler. Dies sollte bei einem COPY TO
nicht zu Problemen führen , aber die Zieltabelle hat bereits frühere Zeilen in einem COPY FROM
erhalten . Diese Zeilen sind weder sichtbar noch zugänglich, belegen aber dennoch Speicherplatz. Dies kann zu einer beträchtlichen Menge an verschwendetem Plattenspeicherplatz führen, wenn der Fehler weit in einem großen Kopiervorgang auftritt. Vielleicht möchten Sie VACUUM
aufrufen um den verschwendeten Speicherplatz zurückzugewinnen.
Fette Hervorhebung von mir. Und:
COPY FROM
löst einen Fehler aus, wenn eine Zeile der Eingabedatei mehr oder weniger Spalten als erwartet enthält.
COPY
ist eine extrem schnelle Möglichkeit, Daten zu importieren / exportieren. Ausgefeilte Überprüfungen und Fehlerbehandlung würden es verlangsamen.
Es wurde versucht, Fehlerprotokollierung zu COPY
hinzuzufügen in Postgres 9.0, aber es wurde nie festgeschrieben.
Lösung
Korrigieren Sie stattdessen Ihre Eingabedatei.
Wenn Sie eine oder mehrere zusätzliche Spalten in Ihrer Eingabedatei haben und die Datei ansonsten konsistent ist , könnten Sie Ihrer Tabelle isa
Dummy-Spalten hinzufügen und lassen Sie diese danach fallen. Oder (sauberer mit Produktionstabellen) in eine temporäre Staging-Tabelle importieren und INSERT
ausgewählte Spalten (oder Ausdrücke) in Ihre Zieltabelle isa
von dort.
Verwandte Antworten mit ausführlicher Anleitung:
- Wie aktualisiere ich ausgewählte Zeilen mit Werten aus einer CSV-Datei in Postgres?
- COPY-Befehl:Nur bestimmte Spalten aus CSV kopieren