C'è una query in Snowflake per identificare i caratteri in un file che non sono validi utf8 [duplicato]
Ho un file che durante il caricamento in Snowflake riceve un errore per caratteri UTF-8 non validi, sono riuscito a caricarlo in una tabella utilizzando un'altra codifica, creando un formato di file con l'opzione ENCODING = 'iso-8859-1'
ma vorrei trovare un modo per ottenerli caratteri interrogati.
Ho provato la TO_BINARY(col,'UTF-8')
funzione sperando che fallisca sulla colonna che ha UTF-8 non valido ma non è stato in grado di ottenere un risultato valido per catturare quei caratteri, qualcuno ha affrontato lo stesso problema?
Risposte
Tieni presente che TUTTI i dati dei caratteri all'interno di Snowflake sono codificati utilizzando UTF-8 . Non c'è altra opzione. Qualche tempo fa, questo non era del tutto vero ed era possibile avere dati di caratteri in Snowflake NON validi in UTF-8. Ma ora non dovrebbe essere possibile.
La specifica ENCODING = 'iso-8859-1'
dell'opzione indicava a Snowflake (durante l'operazione COPY INTO) di eseguire la traduzione del set di caratteri sul file (che è stato quindi interpretato come codificato in ISO-8859-1), mappando tutti i caratteri nel loro equivalente UTF-8 come è stato scritto in Fiocco di neve. Di conseguenza, tutti i dati in Snowflake sono codificati in UTF-8 e quindi non dovrebbero esserci NESSUN carattere non UTF-8 da scoprire. Detto questo, il risultato della traduzione del set di caratteri potrebbe non essere tradotto nei caratteri UTF-8 corretti / previsti se il file sottostante (sorgente) non era veramente codificato con la codifica specificata durante COPY INTO (in questo caso, ISO -8859-1).
Detto questo, qual è l'ultimo problema che stai cercando di risolvere qui? Hai caricato un file sorgente con ENCODING = 'iso-8859-1'
che non era effettivamente ISO-8859-1? O stai dicendo che il file sorgente ERA veramente codificato come ISO-8859-1, e tuttavia in qualche modo i caratteri risultanti in Snowflake sono (1) errati o (2) non validi UTF-8? O stai cercando di determinare l'effettiva codifica di un file sorgente (ignorando del tutto l'aspetto ISO-8859-1)?
Risposta dettagliata trovata qui Come trovare righe con caratteri non utf8 in Snowflake?
Dovrebbe contrassegnare la mia domanda come duplicata e fare riferimento al collegamento, per favore.