Existe-t-il une requête dans Snowflake pour identifier les caractères d'un fichier qui ne sont pas valides utf8 [duplicate]
J'ai un fichier qui, lors du chargement dans Snowflake, reçoit une erreur pour les caractères UTF-8 invalides, j'ai réussi à le charger dans une table en utilisant un autre encodage, en créant un format de fichier avec option ENCODING = 'iso-8859-1'
mais j'aimerais trouver un moyen de les obtenir personnages interrogés.
J'ai essayé la TO_BINARY(col,'UTF-8')
fonction en espérant qu'elle échouera sur le col qui a un UTF-8 invalide mais qui n'a pas été en mesure d'obtenir un résultat valide pour capturer ces personnages, est-ce que quelqu'un a rencontré le même problème?
Réponses
Veuillez noter que TOUTES les données de caractères dans Snowflake sont encodées en UTF-8 . Il n'y a pas d'autre option. Il y a quelque temps, ce n'était pas strictement vrai, et il était possible d'avoir des données de caractères dans Snowflake qui n'étaient PAS valides UTF-8. Mais cela ne devrait pas être possible maintenant.
La spécification de l' ENCODING = 'iso-8859-1'
option demandait à Snowflake (pendant l'opération COPY INTO) d'effectuer la traduction du jeu de caractères sur le fichier (qui a ensuite été interprété comme étant codé en ISO-8859-1), en mappant tous les caractères dans leur équivalent UTF-8 tel qu'il était écrit dans Flocon de neige. Par conséquent, toutes les données de Snowflake sont encodées en UTF-8 et il ne devrait donc y avoir AUCUN caractère non UTF-8 à découvrir. Cela dit, le résultat de la traduction du jeu de caractères peut ne pas se traduire par les caractères UTF-8 corrects / attendus si le fichier (source) sous-jacent n'a pas été réellement codé avec le codage que vous avez spécifié lors de la COPY INTO (dans ce cas, ISO -8859-1).
Compte tenu de cela, quel est le problème ultime que vous essayez de résoudre ici? Avez-vous chargé un fichier source ENCODING = 'iso-8859-1'
qui n'était pas réellement ISO-8859-1? Ou êtes-vous en train de dire que le fichier source était vraiment encodé en ISO-8859-1, et pourtant, d'une manière ou d'une autre, les caractères résultants dans Snowflake sont soit (1) incorrects, soit (2) UTF-8 invalides? Ou essayez-vous de déterminer le codage réel d'un fichier source (en ignorant complètement l'aspect ISO-8859-1)?
Réponse détaillée trouvée ici Comment trouver des lignes avec des caractères non utf8 dans Snowflake?
Devrait marquer ma question comme dupliquée et faire référence au lien, s'il vous plaît.