View a markdown version of this page

Erros no carregamento de caracteres multibyte - Amazon Redshift

O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog publicada em 30 de junho de 2025.

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 obter 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 obter 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.