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