Wie man Fehler ignorieren mit psql \copy meta-Befehl
Ich bin mit psql
mit einer PostgreSQL-Datenbank und die folgenden copy
Befehl:
\COPY isa (np1, np2, sentence) FROM 'c:\Downloads\isa.txt' WITH DELIMITER '|'
Bekomme ich:
ERROR: extra data after last expected column
Wie kann ich überspringen Sie die Zeilen mit den Fehlern?
InformationsquelleAutor Superdooperhero | 2016-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht überspringen Sie die Fehler, ohne das überspringen der ganze Befehl bis zu und einschließlich Postgres 9.5. Es gibt derzeit keine weitere ausgefeilte Fehlerbehandlung.
\copy
nur einen wrapper für SQLCOPY
, dass die Kanäle die Ergebnisse über psql. Das Handbuch fürCOPY
:Fett-Hervorhebung von mir. Und:
Es wurde ein versuchen, fügen Sie Fehler protokollieren, um
COPY
in Postgres 9.0, angeführt von Aster-Daten, aber es war nie begangen. Das Unternehmen war später erworben von Teradata, so dass ich bezweifle, dass Sie immer noch verfolgt das Projekt.Lösung
Fix Ihre input-Datei statt.
Wenn Sie eine oder mehr zusätzliche Spalte in der input-Datei und die Datei ist sonst konsistente, können Sie dummy-Spalten für Ihre Tabelle
isa
- and-drop jene danach. Oder (cleaner Produktion-Tabellen) zu importieren, um eine temporäre staging-Tabelle undINSERT
ausgewählten Spalten (oder Ausdrücke) zu Ihren Ziel-Tabelleisa
von dort.Ähnliche Antworten mit detaillierten Anweisungen:
Ich bekomme die Meldung: FEHLER: fehlende Daten für Spalte "dummy1"
Würde jene Spalten genauso wie die anderen Säulen so weit wie
COPY
betroffen ist. Ihre "fehlende Daten" - Fehler zeigt an, deine input-Datei ist inkonsistent - oder Sie verwenden nicht das korrekte Trennzeichen oder escape-Zeichen. So oder so, ich gehe lieber mit der 2. option die ich erwähnt habe: die temporäre staging-Tabelle. Aber Sie brauchen eine konsistente Datei.InformationsquelleAutor Erwin Brandstetter