2017-02-09 15 views
4

Ich lese eine CSV-Datei in meinem SQL-Skript und kopieren Sie ihre Daten in eine Postgre-SQL-Tabelle. Die Codezeile ist unten:Zeichen mit Byte-Sequenz 0x9d in Codierung 'WIN1252' hat keine Entsprechung in Codierung 'UTF8'

\copy participants_2013 from 'C:/Users/Acrotrend/Desktop/mip_sahil/mip/reelportdata/Participating_Individual_Extract_Report_MIPJunior_2013_160414135957.Csv' with CSV delimiter ',' quote '"' HEADER; 

Ich erhalte folgenden Fehler: Zeichen mit Bytefolge 0x9D in encoding ‚WIN1252‘ haben keine Entsprechung in encoding ‚UTF8‘.

Kann mir jemand helfen, was die Ursache dieses Problems und wie kann ich es lösen?

Antwort

6

Das Problem ist, dass 0x9D kein gültiger Bytewert in WIN1252 ist. Es gibt eine Tabelle hier: https://en.wikipedia.org/wiki/Windows-1252

Das Problem kann sein, dass Sie eine UTF-8-Datei importieren und postgresql auf Windows-1252 ist in Verzug (was ich glaube, ist der Standard auf vielen Windows-Systemen).

Sie müssen den Zeichensatz in Ihrer Windows-Befehlszeile ändern, bevor Sie das Skript mit chcp ausführen. Oder in postgresql können Sie:

SET CLIENT_ENCODING TO 'utf8'; 

Bevor Sie die Datei importieren.

+0

Danke Mann !! Es hat perfekt funktioniert !! –

1

Jede Codierung hat numerische Bereiche gültigen Codes. Sind Sie sicher, dass Ihre Daten in win1252 encoding sind?

Postgres ist sehr streng und importiert keine möglichen beschädigten Kodierungsdateien. Sie können verwenden, das im toleranten Modus arbeiten kann, und es kann fehlerhafte Zeichen entfernen. Nach der Reinigung durch können Sie die Datei importieren.

+0

Wenn Sie wissen, was die Daten darstellen sollen, finden Sie möglicherweise die korrekte Codierung unter https://cdn.rawgit.com/triplee/8bit/master/encodings.html#9d – tripleee

+0

Ich habe nur die Codierung von überprüft meine Datei im Notizblock und es wurde als 'UTF8' angezeigt. Also verstehe ich nicht warum gibt es mir den Fehler der Codierung Probleme. –

+1

vielleicht Ihr Postgresql-Client wechselt zu Win1252-Codierung. Was ist das Ergebnis von "show client_encoding;"? –

Verwandte Themen