View a markdown version of this page

Errori di caricamento di caratteri multibyte - Amazon Redshift

Amazon Redshift non supporterà più l'uso delle UDF Python dopo il 30 giugno 2026. Inizieremo ad applicarlo gradualmente. Per ulteriori informazioni sui dettagli della fine del ciclo di vita e sulle opzioni di migrazione di Python, consulta la post sul blog che è stato pubblicato il 30 giugno 2025.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Errori di caricamento di caratteri multibyte

Le colonne con un tipo di dati CHAR accettano solo un byte UTF-8 caratteri, fino al valore in byte 127 o esadecimale 7F, che è anche il set di caratteri ASCII. Le colonne VARCHAR accettano il formato multibyte UTF-8 caratteri, fino a un massimo di quattro byte. Per ulteriori informazioni, consulta Tipi di carattere.

Se una riga nei dati di caricamento contiene un carattere non valido per il tipo di dati della colonna, COPY restituisce un errore e registra una riga nella tabella del log di sistema STL_LOAD_ERRORS con il numero di errore 1220. Il campo ERR_REASON include la sequenza di byte, in esadecimale, per il carattere non valido.

Un'alternativa alla correzione di caratteri non validi nei dati di caricamento è la sostituzione dei caratteri non validi durante il processo di caricamento. Sostituire non valido UTF-8 caratteri, specificate l'opzione ACCEPTINVCHARS con il comando COPY. Se l'opzione ACCEPTINVCHARS è impostata, il carattere specificato sostituisce il punto codice. Se l'opzione ACCEPTINVCHARS non è impostata, Amazon Redshift accetta i caratteri come validi UTF-8. Per ulteriori informazioni, consulta ACCEPTINVCHARS.

Il seguente elenco di punti di codice è valido UTF-8, le operazioni COPY non restituiscono un errore se l'opzione ACCEPTINVCHARS non è impostata. Tuttavia, questi punti codice sono caratteri non validi. Puoi utilizzare l'opzione ACCEPTINVCHARS per sostituire un punto di codice con un carattere specificato. Questi punti di codice includono l'intervallo di valori da 0xFDD0 a 0xFDEF e valori fino a 0x10FFFF, terminando con FFFE o FFFF:

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

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

L'esempio seguente mostra il motivo dell'errore quando COPY tenta di caricare UTF-8 personaggio e0 a1 c7a4 in una colonna CHAR.

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

Se l'errore è correlato a un tipo di dati VARCHAR, il motivo dell'errore include un codice di errore oltre a quello non valido UTF-8 sequenza esadecimale. L'esempio seguente mostra il motivo dell'errore quando COPY tenta di caricare UTF-8 a4 in un campo VARCHAR.

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

Nella tabella seguente sono elencate le descrizioni e le soluzioni alternative suggerite per gli errori di caricamento VARCHAR. Se si verifica uno di questi errori, sostituisci il carattere con uno valido UTF-8 sequenza di codice o rimuovi il carattere.

Codice di errore Description
1 Le UTF-8 la sequenza di byte supera il numero massimo di quattro byte supportato da VARCHAR.
2 La UTF-8 la sequenza di byte è incompleta. COPY non ha trovato il numero previsto di byte di continuazione per un carattere multibyte prima della fine della stringa.
3 La UTF-8 il carattere a byte singolo non è compreso nell'intervallo. Il byte iniziale non deve essere 254, 255 o qualsiasi carattere compreso tra 128 e 191 (inclusi).
4 Il valore del byte finale nella sequenza di byte è fuori dell'intervallo. Il byte di continuazione deve essere compreso tra 128 e 191 (inclusi).
5 Il UTF-8 il personaggio è riservato come surrogato. I punti di codice surrogato (da U+D800 a U+DFFF) non sono validi.
8 La sequenza di byte supera il valore massimo UTF-8 punto di codice.
9 Il UTF-8 la sequenza di byte non ha un punto di codice corrispondente.