Erros no carregamento de caracteres multibyte - Amazon Redshift

Erros no carregamento de caracteres multibyte

As colunas com um tipo de dados CHAR aceitam somente caracteres UTF-8 de único byte, com valor de byte de até 127, ou 7F hex, que também é o conjunto de caracteres ASCII. Colunas VARCHAR aceitam caracteres UTF-8 multibyte até o máximo de quatro bytes. Para ter mais informações, consulte Tipos de caracteres.

Se uma linha em seus dados de carregamento contiver um caractere que não for válido para o tipo de dados da coluna, COPY retornará um erro e registrará uma linha na tabela de log de sistema STL_LOAD_ERRORS com o erro número 1220. O campo ERR_REASON inclui a sequência de bytes, em hex, para o caractere inválido.

Uma alternativa para corrigir caracteres não válidos em seus dados de carregamento é substituir os caracteres não válidos durante o processo de carregamento. Para substituir os caracteres UTF-8 não válidos, especifique a opção ACCEPTINVCHARS com o comando COPY. Se a opção ACCEPTINVCHARS estiver definida, o caractere especificado substituirá o ponto de código. Se a opção ACCEPTINVCHARS não estiver definida, o Amazon Redshift aceitará os caracteres como UTF-8 válidos. Para ter mais informações, consulte ACCEPTINVCHARS.

A lista de pontos de código a seguir são caracteres UTF-8 válidos. As operações COPY não retornarão um erro se a opção ACCEPTINVCHARS não estiver definida. No entanto, esses pontos de código são caracteres inválidos. Use opção ACCEPTINVCHARS para substituir o ponto de código por um caractere especificado por você. Esses pontos de código incluem o intervalo de valores de 0xFDD0 a 0xFDEF e valores até 0x10FFFF, terminados em FFFE ou FFFF:

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

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

O exemplo a seguir mostra o motivo do erro quando COPY tenta carregar o caractere UTF-8 e0 a1 c7a4 em uma coluna CHAR:

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

Se o erro for relacionado a um tipo de dados VARCHAR, o motivo do erro incluirá um código de erro e a sequência hexadecimal UTF-8 inválida. O exemplo a seguir mostra o motivo do erro quando COPY tenta carregar UTF-8 a4 em um campo VARCHAR:

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

A tabela a seguir lista as descrições e ações alternativas sugeridas para erros de carregamento VARCHAR. Se um desses erros ocorrer, substitua o caractere com uma sequência de código UTF-8 válida ou remova o caractere.

Código de erro Descrição
1 A sequência de bytes UTF-8 excede o máximo de quatro bytes compatível com VARCHAR.
2 A sequência de bytes UTF-8 está incompleta. COPY não encontrou o número esperado de bytes de continuação para um caractere multibyte antes do término da string.
3 O caractere UTF-8 de único byte está fora do intervalo. O byte inicial não deve ser 254, 255 ou qualquer caractere entre 128 e 191 (inclusive).
4 O valor do byte final na sequência de bytes está fora do intervalo. O byte de continuação deve ser entre 128 e 191 (inclusive).
5 O caractere UTF-8 é reservado como um substituto. Os pontos de código substituto (U+D800 a U+DFFF) não são válidos.
8 A sequência de bytes excede o ponto de código UTF-8 máximo.
9 A sequência de bytes UTF-8 não tem um ponto de código correspondente.