Snowflake中处理含退格符包裹字段的文件格式配置问题
问题原因
你遇到的报错是因为 Snowflake 的 FIELD_OPTIONALLY_ENCLOSED_BY 参数不支持 0xXX 格式的十六进制字面量赋值,该参数仅接受单字节字符的标准转义序列或者可打印字符直接赋值。
解决方案
根据你的需求可以选择对应方案:
场景1:读取时自动剔除字段首尾的退格符
直接将参数值改为退格符的标准转义写法即可,修改后的文件格式定义如下:
CREATE OR REPLACE FILE FORMAT ABC FIELD_DELIMITER = '\u001B' ESCAPE_UNENCLOSED_FIELD = 'NONE' TRIM_SPACE = TRUE NULL_IF = ('<NULL>') EMPTY_FIELD_AS_NULL = FALSE FIELD_OPTIONALLY_ENCLOSED_BY = '\b'; -- 也可以替换为 '\u0008'
配置完成后,Snowflake 会自动识别字段首尾的退格符为包裹标记,读取时直接剔除,不会保留到字段值中。
场景2:需要完整保留字段内的退格符
不需要修改文件格式配置,在读取数据后使用字符串处理函数清理首尾退格符即可:
-- 示例查询,CHR(8) 对应退格符的ASCII编码 SELECT TRIM(目标字段名, CHR(8)) AS 清理后字段 FROM 表名;
内容的提问来源于stack exchange,提问作者Priya Chauhan
相关产品推荐
相关产品推荐

