Errores de carga de caracteres multibyte - Amazon Redshift

Errores de carga de caracteres multibyte

Las columnas con un tipo de datos CHAR aceptan solamente caracteres UTF-8 de un solo byte, hasta un valor de byte 127 o 7F hexadecimal, que también es el conjunto de caracteres ASCII. Las columnas VARCHAR aceptan caracteres multibyte UTF-8 de hasta un máximo de cuatro bytes. Para obtener más información, consulte Tipos de caracteres.

Si una línea de los datos cargados contiene un carácter no válido para el tipo de datos de la columna, COPY devuelve un error y registra una fila en la tabla de registro del sistema STL_LOAD_ERRORS con el número de error 1220. El campo ERR_REASON incluye la secuencia de bytes, en hexadecimal, para el carácter no válido.

Una alternativa a corregir caracteres no válidos en los datos de carga es sustituir los caracteres no válidos durante el proceso de carga. Para reemplazar los caracteres UTF-8 no válidos, especifique la opción ACCEPTINVCHARS del comando COPY. Si se ha configurado la opción ACCEPTINVCHARS, el carácter que especifique sustituye al punto de código. Si la opción ACCEPTINVCHARS no está configurada, Amazon Redshift acepta los caracteres como UTF-8 válido. Para obtener más información, consulte ACCEPTINVCHARS.

La siguiente lista de puntos de código es UTF-8 válida, las operaciones COPY no devuelven un error si la opción ACCEPTINVCHARS no está configurada. No obstante, estos puntos de código son caracteres no válidos. Puede utilizar la opción ACCEPTINVCHARS para reemplazar un punto de código por un carácter que especifique. Estos puntos de código incluyen el rango de valores de 0xFDD0 a 0xFDEF y valores hasta 0x10FFFF, terminando con FFFE o FFFF:

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

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

En el siguiente ejemplo, se muestra la razón del error cuando COPY intenta cargar el carácter UTF-8 e0 a1 c7a4 en una columna CHAR.

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

Si el error se relaciona con un tipo de datos VARCHAR, la razón del error incluye un código de error y la secuencia hexadecimal UTF-8 no válida. En el siguiente ejemplo, se muestra la razón del error cuando COPY prueba cargar el carácter UTF-8 a4 en un campo VARCHAR.

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

En la siguiente tabla, se presentan las descripciones y las soluciones a problemas sugeridas para los errores de carga VARCHAR. Si se produce uno de estos errores, reemplace el carácter por una secuencia de código UTF-8 válida o elimínelo.

Código de error Descripción
1 La secuencia de bytes UTF-8 supera el máximo de cuatro bytes compatible con VARCHAR.
2 La secuencia de bytes UTF-8 está incompleta. COPY no encontró la cantidad esperada de bytes de continuación para un carácter multibyte antes del final de la cadena.
3 El carácter de un byte UTF-8 se encuentra fuera de rango. El byte de comienzo no debe ser 254, 255 ni cualquier carácter entre 128 y 191 (inclusive).
4 El valor del byte a la derecha en la secuencia de bytes se encuentra fuera de rango. El byte de continuación debe encontrarse entre 128 y 191 (inclusive).
5 El carácter UTF-8 se reserva como sustituto. Los valores de punto sustitutos (de U+D800 a U+DFFF) no son válidos.
8 La secuencia de bytes supera el valor de punto UTF-8 máximo.
9 La secuencia de bytes UTF-8 no tiene un valor de punto correspondiente.