View a markdown version of this page

Fehler beim Laden von Multibyte-Zeichen - Amazon Redshift

Amazon Redshift unterstützt ab Patch 198 nicht mehr die Erstellung neuer Python-UDFs. Bestehende Python-UDFs werden bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im Blog-Posting.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehler beim Laden von Multibyte-Zeichen

Spalten mit einem CHAR-Datentyp akzeptieren nur UTF-8 Einzelbyte-Zeichen bis zum Bytewert 127 oder 7F Hex, was auch der ASCII-Zeichensatz ist. VARCHAR-Spalten akzeptieren UTF-8 Multibyte-Zeichen bis zu einem Maximum von vier Byte. Weitere Informationen finden Sie unter Zeichentypen.

Wenn eine Zeile in den geladenen Daten ein für den Datentyp der Spalte ungültiges Zeichen enthält, gibt COPY einen Fehler zurück und protokolliert eine Zeile mit der Fehlernummer 1220 in der Systemprotokolltabelle STL_LOAD_ERRORS. Das Feld ERR_REASON enthält die Byte-Folge in Hex für das ungültige Zeichen.

Alternativ zur Korrektur von ungültigen Zeichen in den geladenen Daten können Sie die ungültigen Zeichen auch während des Ladeprozesses ersetzen. Um ungültige UTF-8 Zeichen zu ersetzen, geben Sie die Option ACCEPTINVCHARS mit dem Befehl COPY an. Wenn die Option ACCEPTINVCHARS festgelegt ist, ersetzt das von Ihnen angegebene Zeichen den Codepunkt. Wenn die Option ACCEPTINVCHARS nicht gesetzt ist, akzeptiert Amazon Redshift die Zeichen als gültig. UTF-8 Weitere Informationen finden Sie unter ACCEPTINVCHARS.

Die folgende Liste von Codepunkten ist gültig. COPY-Operationen geben keinen Fehler zurück UTF-8, wenn die Option ACCEPTINVCHARS nicht gesetzt ist. Diese Codepunkte sind jedoch keine gültigen Zeichen. Sie können die Option ACCEPTINVCHARS verwenden, um einen Codepunkt durch ein von Ihnen festgelegtes Zeichen zu ersetzen. Diese Codepunkte beinhalten den Wertebereich von 0xFDD0 bis 0xFDEF und Werte bis 0x10FFFF, endend mit FFFE oder FFFF:

  • 0xFFFE, 0x1FFFE, 0x2FFFE, …, 0xFFFFE, 0x10FFFE

  • 0xFFFF, 0x1FFFF, 0x2FFFF, …, 0xFFFFF, 0x10FFFF

Das folgende Beispiel zeigt die Fehlerursache, wenn COPY versucht, ein UTF-8 Zeichen e0 a1 c7a4 in eine CHAR-Spalte zu laden.

Multibyte character not supported for CHAR (Hint: Try using VARCHAR). Invalid char: e0 a1 c7a4

Wenn der Fehler mit einem VARCHAR-Datentyp zusammenhängt, umfasst die Fehlerursache einen Fehlercode sowie die ungültige UTF-8 Hexadezimalsequenz. Das folgende Beispiel zeigt die Fehlerursache, wenn COPY versucht, UTF-8 a4 in ein VARCHAR-Feld zu laden.

String contains invalid or unsupported UTF-8 codepoints. Bad UTF-8 hex sequence: a4 (error 3)

In der folgenden Tabelle werden die Beschreibungen und vorgeschlagenen Umgehungen für VARCHAR-Ladefehler aufgelistet. Wenn einer dieser Fehler auftritt, ersetzen Sie das Zeichen durch eine gültige UTF-8 Codesequenz oder entfernen Sie das Zeichen.

Fehlercode Beschreibung
1 Die UTF-8 Bytefolge überschreitet das von VARCHAR unterstützte Maximum von vier Byte.
2 Die UTF-8 Bytefolge ist unvollständig. COPY konnte nicht die erwartete Anzahl von Fortsetzungsbytes für ein Multibyte-Zeichen vor dem Ende der Zeichenfolge finden.
3 Das UTF-8 Einzelbyte-Zeichen liegt außerhalb des zulässigen Bereichs. Das Startbyte darf nicht 254, 255 oder ein Zeichen zwischen 128 und 191 (einschließlich) sein.
4 Der Wert des Bytes am Ende der Bytefolge befindet sich außerhalb des Bereichs. Das Fortsetzungsbyte muss zwischen 128 und 191 (einschließlich) liegen.
5 Das UTF-8 Zeichen ist als Surrogat reserviert. Surrogat-Codepunkte (U+D800 bis U+DFFF) sind nicht gültig.
8 Die Bytefolge überschreitet den maximalen UTF-8 Codepunkt.
9 Die UTF-8 Bytesequenz hat keinen passenden Codepunkt.