对外部文件使用更强的 UTF-8 验证¶
此行为变更已通过 7.34 版本实施。有关行为变更的最新详细信息,请参阅 行为变更日志。
Snowflake 对外部文件使用更强的 UTF-8 验证。
- 变更前:
当您查询包含无效 UTF-8 数据的外部 Avro、Parquet、Orc、CSV、JSON 或 XML 文件时,查询通常会成功。
- 变更后:
当您查询包含无效 UTF-8 数据的暂存区上的外部 Avro、Parquet、Orc、CSV、JSON 或 XML 文件时,查询会失败。
如果利用 COPY INTO <table> 或者 Snowpipe 加载包含无效 UTF-8 数据的外部文件,Snowflake 会使用对象定义中指定的复制选项
ON_ERROR
继续执行。查询外部表时,对于包含无效 UTF-8 数据的记录,Snowflake 会省略其查询结果。遇到无效数据后,Snowflake 会继续扫描文件(与
ON_ERROR = CONTINUE
相似),而不会返回错误消息。
为了避免 UTF-8 验证错误,Snowflake 建议为文件格式指定 REPLACE_INVALID_CHARACTERS = TRUE
,以便将任何无效的 UTF-8 字符替换为 Unicode 替代字符 (�
)。
对于 Parquet 文件,还可以为文件格式设置 BINARY_AS_TEXT = FALSE
,以便将具有未定义的逻辑数据类型的列解释为二进制数据而不是 UTF-8 文本。
请注意,此行为变更不适用于当前正加载无效 UTF8 的现有账户。它仅影响新账户。如有任何问题,请联系 Snowflake 支持部门。
参考:1013 1014