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

Snowflake外部阶段能否用通配路径自动遍历嵌套日期文件夹加载文件?

Snowflake 遍历嵌套文件夹加载文件问题解答

问题场景

S3存储结构如下:

s3://finance/credits
/Week_2022_0601_0607
     file01.json
     file02.json
/Week_2022_0608_0615
     file01.json
     file02.json
     file03.json
...(每周新增以Week_开头的子文件夹)

想通过设置外部阶段的storage_location为s3://finance/credits/./*.json,让Snowflake执行COPY INTO时自动遍历所有含日期的嵌套文件夹加载文件;同时询问该需求在COPY INTO使用或不使用阶段的场景下的实现方式。


核心结论

不能将外部阶段的storage_location设置为s3://finance/credits/./*.json,因为Snowflake的外部阶段存储路径仅支持指定固定前缀,不支持这种通配符写法。但可以通过PATTERN参数实现自动遍历所有嵌套子文件夹的需求,以下分两种场景说明:

1. 使用外部阶段的场景

  • 先创建指向根前缀的外部阶段:
CREATE OR REPLACE EXTERNAL STAGE your_credits_stage
STORAGE_LOCATION = 's3://finance/credits/'
FILE_FORMAT = (TYPE = JSON)
CREDENTIALS = (AWS_KEY_ID = 'your_aws_key' AWS_SECRET_KEY = 'your_aws_secret');
  • 执行COPY INTO时,通过PATTERN参数用正则匹配所有Week_子文件夹下的JSON文件:
COPY INTO your_target_table
FROM @your_credits_stage
PATTERN = '.*Week_.*\\.json';

该正则会匹配所有包含Week_路径下的.json文件,后续新增的Week_开头子文件夹里的文件也会被自动覆盖。

2. 不使用外部阶段的场景

直接在COPY INTO语句中指定根路径,并搭配PATTERN参数实现匹配:

COPY INTO your_target_table
FROM 's3://finance/credits/'
PATTERN = '.*Week_.*\\.json'
FILE_FORMAT = (TYPE = JSON)
CREDENTIALS = (AWS_KEY_ID = 'your_aws_key' AWS_SECRET_KEY = 'your_aws_secret');

同样,新增的Week_子文件夹会被自动遍历,无需修改语句。


内容的提问来源于stack exchange,提问作者David Dumas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:06:39