Kann CSV nicht in Postgres importieren (unerwartete Figur, die an Ort 4194303 gefunden wurde)
-
21-12-2019 - |
Frage
Wenn ich versuche, einen CSV in meine Redshift-Datenbank zu importieren, erhalte ich diesen Fehler
generasacodicetagpre.Mit dem CSV selbst scheint alles in Ordnung zu sein. Die STL-Tabelle sagt mir, dass der Fehler online 70269 des CSV ist, der diese Zeichenfolge enthält
generasacodicetagpre.Alle Ideen, warum es nicht laden wird?
edit: Es hat eindeutig mit der Zahl '4194303' zu tun. Viele meiner Redshift-Uploads sind fehlgeschlagen, hier ist ein kurzes Beispiel meiner STL_LOAD_ERRORS
generasacodicetagpre.Alle Einträge in der Tabelle, in denen diese Fehler vom Typ "Text" auftreten, und es gibt ungefähr 30 Säulen. Das CSV selbst enthält viele Tausende von Datensätzen (recht große CSV-Datei).
Ich habe festgestellt, dass die Nummer 4194303 von der 4-MB-Grenze stammt, die von der TruncatEcolumns-Funktion des RedShift-Kopiers eingestellt ist. Durch das Deaktivieren dieser Funktion bekomme ich eine "String-Länge überschreitet den ddl-Länge" (weshalb ich in erster Linie Truncatecolumns verwende).
Das Problem ist also, dass viele meiner Datensätze über 4 MB sind, und RotShift unterstützt solche Datensätze nicht, wenn eine der Attribute abgeschnitten werden muss.
Mit der Option MaxError 1000-Option des Copy-Befehls kann ich jedoch die 4MB + -Datensätze ignorieren und mit einer Datenbank überlassen werden, die nur die gewünschten Zeilen enthält, die weniger als 4 MB sind.Lösung
können Sie Ihren Copy-Befehl mit den unten hinzugefügten Optionen versuchen
akzeptisinvchars entkommen
Einige Male, wenn Sie CSV-Dateien von Mac oder Windows erstellen, können sie Sonderzeichen enthalten.
Andere Tipps
Das Problem ist mit dem EOL (Ende des Zeilen-) Zeichens.Ich hatte heute das gleiche Problem und das Problem war, dass mein CSV Mac EOL (wahrscheinlich ein CR) hatte.Ich habe es in UNIX geändert (die einen LF verwendet) und die Kopie durchlief.