View a markdown version of this page

Fehler beim Laden von Multibyte-Zeichen - Amazon Redshift

Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zu den Details zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie auf der Blogbeitrag das wurde am 30. Juni 2025 veröffentlicht.

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 Einzelbyte-Werte UTF-8 Zeichen, bis zum Bytewert 127, oder 7F Hex, was auch dem ASCII-Zeichensatz entspricht. VARCHAR-Spalten akzeptieren Multibyte-Spalten UTF-8 Zeichen, maximal 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. Zum Ersetzen ist nicht gültig UTF-8 Zeichen, 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 UTF-8, COPY-Operationen geben keinen Fehler zurück, 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 den Fehlergrund, wenn COPY versucht, zu laden UTF-8 Zeichen e0 a1 c7a4 in eine CHAR-Spalte.

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

Wenn der Fehler mit einem VARCHAR-Datentyp zusammenhängt, enthält der Fehlergrund einen Fehlercode sowie den ungültigen UTF-8 hexadezimale Sequenz. Das folgende Beispiel zeigt den Fehlergrund, wenn COPY versucht, zu laden UTF-8 a4 in ein VARCHAR-Feld.

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 ein gültiges UTF-8 codieren Sie die Sequenz oder entfernen Sie das Zeichen.

Fehlercode Beschreibung
1 Das UTF-8 Die Bytefolge überschreitet das von VARCHAR unterstützte Maximum von vier Byte.
2 Die UTF-8 Byte-Sequenz ist unvollständig. COPY konnte nicht die erwartete Anzahl von Fortsetzungsbytes für ein Multibyte-Zeichen vor dem Ende der Zeichenfolge finden.
3 Die UTF-8 Das 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 Der Charakter ist als Surrogat reserviert. Surrogat-Codepunkte (U+D800 bis U+DFFF) sind nicht gültig.
8 Die Bytefolge überschreitet das Maximum UTF-8 Codepunkt.
9 Der UTF-8 Die Bytefolge hat keinen passenden Codepunkt.