Snowflake COPY INTO指定S3单个无扩展名文件失败求助
解决Snowflake COPY INTO匹配无扩展名数字文件名的问题
问题分析
当你在阶段路径中使用@external_stages/12时,Snowflake会将12作为前缀进行匹配,因此会加载所有以12开头的文件(如12、1245等)。而使用pattern='^12$'无效,是因为pattern匹配的是阶段根路径之后的文件路径部分,如果你的阶段根路径包含额外层级,单纯匹配12就无法命中目标文件。
解决方案
方案1:根路径+精确pattern匹配
不在阶段路径中指定文件名前缀,直接通过pattern参数锁定目标文件:CREATE OR REPLACE TABLE sbfe_json (request_id INT, source_json VARIANT); COPY INTO sbfe_json FROM (SELECT '12', t.* FROM '@external_stages' AS t) FILE_FORMAT = (TYPE='json') PATTERN='^12$';方案2:适配文件夹层级调整pattern
如果你的外部阶段指向s3://bucket_name/(而非s3://bucket_name/folder/),那么目标文件的相对路径是folder/12,需要修改pattern为:PATTERN='^folder/12$';方案3:验证文件真实路径
先执行LIST @external_stages;命令,查看阶段下所有文件的完整相对路径,确认目标文件的真实名称(排查是否存在隐藏扩展名或路径层级错误)。
内容的提问来源于stack exchange,提问作者data_matata
相关产品推荐
相关产品推荐

