2014-02-18 4 views
15

Ich versuche, einige Textdateien in Redshift zu laden. Sie sind tabulatorgetrennt, außer nach dem letzten Zeilenwert. Das verursacht einen Delimiter nicht gefunden Fehler. Ich sehe nur eine Möglichkeit zum Festlegen des Feldtrennzeichens in der COPY-Anweisung, nicht zum Festlegen eines Zeilenbegrenzers. Irgendwelche Ideen, die nicht alle meine Dateien verarbeiten, um am Ende jeder Zeile einen Tab hinzuzufügen?Redshift COPY Befehl Delimiter nicht gefunden

Dank

Antwort

31

Ich glaube nicht das Problem mit dem ist <tab> am Ende der Zeilen fehlen. Sind Sie sicher, dass ALLE Zeilen die richtige Anzahl von Feldern haben?

Führen Sie die Abfrage:

select le.starttime, d.query, d.line_number, d.colname, d.value, 
le.raw_line, le.err_reason  
from stl_loaderror_detail d, stl_load_errors le 
where d.query = le.query 
order by le.starttime desc 
limit 100 

den vollständigen Fehlerbericht zu erhalten. Es wird der Dateiname mit Fehlern, falscher Zeilennummer und Fehlerdetails angezeigt.

Dies hilft zu finden, wo das Problem liegt.

+0

Vielen Dank Sie haben mich so viel Zeit gerettet – Vor

+0

ja ich auch. Danke für diese Diagnoseabfrage. v nice. –

22

Sie können den Fehler Delimiter nicht gefunden erhalten, wenn Ihre Zeile weniger Spalten als erwartet hat. Einige CSV-Generatoren geben am Ende möglicherweise nur ein einziges Anführungszeichen aus, wenn die letzten Spalten null sind.

Um dies zu beheben, können Sie FILLRECORD auf Redshift Kopieroptionen verwenden.