Errori di caricamento di caratteri multibyte - Amazon Redshift

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 caratteri UTF-8 a byte singolo, fino un valore di byte 127 o 7F esadecimale, che rappresenta anche il set di caratteri ASCII. Le colonne VARCHAR accettano caratteri multibyte UTF-8, 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. Per sostituire i caratteri UTF-8 non validi, specifica 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 UTF-8 valido. Per ulteriori informazioni, consulta ACCEPTINVCHARS.

Il seguente elenco di punti 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 prova a caricare il carattere UTF-8 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 e la sequenza esadecimale UTF-8 non valida. L'esempio seguente mostra il motivo dell'errore quando COPY prova a caricare il carattere 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 una sequenza di codice UTF-8 valida o rimuovi il carattere.

Codice di errore Descrizione
1 La sequenza di byte UTF-8 supera il massimo di quattro byte supportato da VARCHAR.
2 La sequenza di byte UTF-8 è incompleta. COPY non ha trovato il numero previsto di byte di continuazione per un carattere multibyte prima della fine della stringa.
3 Il carattere a byte singolo UTF-8 è fuori dell'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 carattere UTF-8 è riservato come surrogato. I punti di codice surrogato (da U+D800 a U+DFFF) non sono validi.
8 La sequenza di byte supera il punto di codice UTF-8 massimo.
9 La sequenza di byte UTF-8 non ha un punto di codice corrispondente.