Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Erreurs de chargement de caractères multioctets
Les colonnes avec un type de données CHAR acceptent uniquement les caractères UTF-8 codés sur un octet, jusqu’à la valeur d’octet 127, ou la valeur hexadécimale 7F, qui est également le jeu de caractères ASCII. Les colonnes VARCHAR acceptent les caractères UTF-8 multioctets, jusqu’à un maximum de quatre octets. Pour de plus amples informations, veuillez consulter Types caractères.
Si, dans vos données de chargement, une ligne contient un caractère non valide pour le type de données de colonne, COPY renvoie une erreur et enregistre une ligne dans la table du journal système STL_LOAD_ERRORS avec le numéro d’erreur 1220. Le champ ERR_REASON comprend la séquence d’octets, en hexadécimal, pour le caractère non valide.
Au lieu de corriger les caractères non valides dans vos données de chargement, vous pouvez également remplacer les caractères non valides pendant le processus de chargement. Pour remplacer les caractères UTF-8 non valides, spécifiez l’option ACCEPTINVCHARS avec la commande COPY. Si l’option ACCEPTINVCHARS est définie, le caractère que vous spécifiez remplace le point de code. Si l’option ACCEPTINVCHARS n’est pas définie, Amazon Redshift accepte les caractères comme UTF-8 valides. Pour plus d'informations, consultez ACCEPTINVCHARS.
La liste de points de code suivante est composée d’UTF-8 valides. Les opérations COPY ne renvoient pas d’erreur si l’option ACCEPTINVCHARS n’est pas définie. Toutefois, ces points de code ne sont pas des caractères valides. Vous pouvez utiliser l’option ACCEPTINVCHARS pour remplacer un point de code par un caractère que vous spécifiez. Ces points de code incluent la plage de valeurs de 0xFDD0
à 0xFDEF
et des valeurs allant jusqu’à 0x10FFFF
, se terminant par FFFE
ou FFFF
:
0xFFFE
,0x1FFFE
,0x2FFFE
, …,0xFFFFE
,0x10FFFE
0xFFFF
,0x1FFFF
,0x2FFFF
, …,0xFFFFF
,0x10FFFF
L’exemple suivant affiche le motif de l’erreur lorsque COPY tente de charger le caractère UTF-8 e0 a1 c7a4
dans une colonne CHAR.
Multibyte character not supported for CHAR (Hint: Try using VARCHAR). Invalid char: e0 a1 c7a4
Si l’erreur est liée à un type de données VARCHAR, le motif de l’erreur inclut un code d’erreur ainsi que la séquence hexadécimale UTF-8 non valide. L’exemple suivant affiche le motif de l’erreur lorsque la commande COPY tente de charger le caractère UTF-8 a4
dans un champ VARCHAR.
String contains invalid or unsupported UTF-8 codepoints. Bad UTF-8 hex sequence: a4 (error 3)
Le tableau suivant répertorie les descriptions et les solutions de contournement suggérées pour les erreurs de chargement VARCHAR. Si l’une de ces erreurs se produit, remplacez le caractère par une séquence de code UTF-8 valide ou supprimez le caractère.
Code d’erreur | Description |
---|---|
1 | La séquence d’octets UTF-8 dépasse le maximum de quatre octets pris en charge par VARCHAR. |
2 | La séquence d’octets UTF-8 est incomplète. COPY n’a pas trouvé le nombre d’octets de continuation attendu pour un caractère multioctets avant la fin de la chaîne. |
3 | Le caractère UTF-8 codé sur un octet est hors de portée. L’octet de départ ne doit pas être 254, 255 ou tout autre caractère entre 128 et 191 (inclus). |
4 | La valeur de l’octet de fin de la séquence d’octets est hors de portée. L’octet de continuation doit être compris entre 128 et 191 (inclus). |
5 | Le caractère UTF-8 est réservé comme substitution. Les points de code de substitution (U+D800 à U+DFFF) ne sont pas valides. |
8 | La séquence d’octets dépasse le point de code UTF-8 maximal. |
9 | La séquence d’octets UTF-8 n’a pas de point de code correspondant. |