You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中COPY INTO如何用正则过滤文件排除Snapshot子文件夹

问题根因

Snowflake的COPY INTO命令默认会递归遍历指定存储路径下的所有文件,包括全部子文件夹内的文件。当前加载路径指定为account目录时,Snapshot子文件夹里的快照文件会被一并扫描加载,最终导致数据重复。

解决方法

在COPY INTO语句中添加PATTERN参数,通过正则规则仅匹配account根目录下符合YYYY-MM.csv命名格式的文件,自动排除子文件夹内的文件,修改后的完整语句如下:

copy into BINGO_DWH_DEV.LANDING.CRM_ACCOUNT_TEMP 
from 'azure://abc.blob.core.windows.net/abc-abc/account' 
credentials=(azure_sas_token= 'abc') 
ON_ERROR='CONTINUE' 
FILE_FORMAT=(type=csv field_delimiter=',' FIELD_OPTIONALLY_ENCLOSED_BY='"')
PATTERN = '^[0-9]{4}-[0-9]{2}\.csv$';

规则说明

  • PATTERN参数会对指定account路径下所有文件的相对路径做正则匹配,只有完全匹配规则的文件才会被加载
  • 所用正则的匹配逻辑:
    • ^ 标记匹配从相对路径的起始位置开始
    • [0-9]{4}-[0-9]{2} 匹配4位年份数字+横杠+2位月份数字的文件名前缀
    • \.csv$ 标记匹配.csv后缀到相对路径的结束位置
  • 过滤效果:
    • Snapshot子文件夹下的文件相对路径以Snapshot/开头,不符合路径起始为4位数字的规则,且文件名带_时间戳后缀,也不满足以.csv直接结尾的要求,会被全部过滤
    • 后续account目录下新增其他子文件夹时,该规则也会自动排除所有子目录内的文件,无需额外调整

注意:Snowflake的PATTERN参数使用RE2正则语法,不要使用PCRE特性的正则语法避免匹配失效

内容的提问来源于stack exchange,提问作者Madhu Pasham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 06:57:17