首页 > 解决方案 > Snowflake 中是否有查询来识别文件中无效的 utf8 字符

问题描述

我有一个文件,当加载到 Snowflake 时出现无效 UTF-8 字符错误,我已经设法使用另一种编码将其加载到表中,方法是使用选项创建文件格式,ENCODING = 'iso-8859-1'但我想找到一种方法来获取这些查询的字符。

我尝试TO_BINARY(col,'UTF-8')了函数,希望它会在具有无效 UTF-8 但无法获得有效结果来捕获这些字符的 col 上失败,有没有人遇到过同样的问题?

标签: snowflake-cloud-data-platform

解决方案


请注意, Snowflake 中的所有字符数据均使用UTF-8编码。没有其他选择。不久前,严格来说这不是真的,雪花中的字符数据可能不是有效的 UTF-8。但现在应该不可能了。

指定该ENCODING = 'iso-8859-1'选项会指示 Snowflake(在 COPY INTO 操作期间)对文件执行字符集转换(然后将其解释为以 ISO-8859-1 编码),将所有字符映射到其写入时的 UTF-8 等效项雪花。因此,Snowflake 中的所有数据都是 UTF-8 编码的,因此不应发现任何非 UTF-8 字符。也就是说,如果底层(源)文件没有真正使用您在 COPY INTO 期间指定的编码(在本例中为 ISO -8859-1)。

鉴于此,您在这里试图解决的最终问题是什么?您是否加载了ENCODING = 'iso-8859-1'实际上不是 ISO-8859-1 的源文件?或者你是说源文件真正编码为 ISO-8859-1,但不知何故,雪花中的结果字符要么是 (1) 不正确,要么是 (2) 无效的 UTF-8?或者您是否试图确定源文件的实际编码(完全忽略整个 ISO-8859-1 方面)?


推荐阅读