Fehler beim Laden von Multibyte-Zeichen - Amazon Redshift

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-Zeichen von UTF -8 bis zum Bytewert 127 oder 7F Hex, was auch der ASCII Zeichensatz ist. VARCHARSpalten akzeptieren Multibyte-Zeichen von UTF -8 bis zu einem Maximum von vier Byte. Weitere Informationen finden Sie unter Zeichentypen.

Wenn eine Zeile in Ihren Ladedaten ein Zeichen enthält, das für den Spaltendatentyp nicht gültig ist, wird ein Fehler COPY zurückgegeben und eine Zeile in der ERRORS Systemprotokolltabelle STL _ LOAD _ mit der Fehlernummer 1220 protokolliert. Das REASON Feld ERR _ enthält die Bytefolge in Hexadezimalform 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 ACCEPTINVCHARS Option mit dem COPY Befehl an. Wenn die ACCEPTINVCHARS Option gesetzt ist, ersetzt das von Ihnen angegebene Zeichen den Codepunkt. Wenn die ACCEPTINVCHARS Option 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 ACCEPTINVCHARS Option 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 beim COPY Versuch, 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 Hexadezimalsequenz UTF -8. Das folgende Beispiel zeigt die Fehlerursache beim COPY Versuch, 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 sind die Beschreibungen und Lösungsvorschläge für VARCHAR Ladefehler aufgeführt. 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-Byte-Sequenz überschreitet das Vier-Byte-Maximum, das von unterstützt wird. VARCHAR
2 Die UTF -8-Byte-Sequenz ist unvollständig. COPYhat nicht die erwartete Anzahl von Fortsetzungsbytes für ein Multibyte-Zeichen vor dem Ende der Zeichenfolge gefunden.
3 Das Einzelbyte-Zeichen UTF -8 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 Zeichen UTF -8 ist als Surrogat reserviert. Ersatzcodepunkte (U+D800 bis DFFF U+) sind nicht gültig.
8 Die Bytefolge überschreitet die maximale Anzahl UTF von -8 Codepunkten.
9 Die UTF -8-Byte-Sequenz hat keinen passenden Codepunkt.