Snowflake中ESCAPE=NONE配置不生效问题求助
解决Snowflake导入CSV.gz时反斜杠被转义的问题
你的问题出在只设置了ESCAPE=NONE,但Snowflake对未被引号包裹的字段有单独的转义控制参数ESCAPE_UNENCLOSED_FIELD,默认值是反斜杠,所以即使你关掉了带引号字段的转义,未包裹字段里的反斜杠还是会被当成转义符处理。
直接修改你的COPY语句,在FILE_FORMAT里加上ESCAPE_UNENCLOSED_FIELD=NONE即可:
COPY INTO TABLE_NAME FROM @stage_name FILE_FORMAT = ( TYPE = CSV, COMPRESSION = GZIP, ESCAPE= NONE, ESCAPE_UNENCLOSED_FIELD = NONE, FIELD_DELIMITER=',', SKIP_HEADER=1, FIELD_OPTIONALLY_ENCLOSED_BY='"', EMPTY_FIELD_AS_NULL = TRUE, NULL_IF=('') ), PATTERN = 'my_pattern', ON_ERROR = 'CONTINUE'
测试这个配置后,示例数据里的R2\ 会被完整导入,不会把反斜杠当成转义符吃掉后面的空格。
补充说明:如果数据里有被引号包裹的字段且内部包含反斜杠,ESCAPE=NONE已经确保这些反斜杠不会被转义;而未包裹字段的转义逻辑由ESCAPE_UNENCLOSED_FIELD控制,设置为NONE就完全禁用了未包裹字段的转义行为。
内容的提问来源于stack exchange,提问作者yagmurkoksal
相关产品推荐
相关产品推荐

