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

如何通过SnowSQL一次性将Amazon S3近10天数据加载至Snowflake

用SnowSQL批量加载S3近10天变更数据到Snowflake表

先确认你已经搞定Snowflake与S3的集成(存储集成或外部阶段),且目标表结构和S3数据格式匹配。以下是具体操作步骤:

1. 明确S3文件的时间筛选依据

你得先搞清楚S3里的文件怎么区分时间:要么文件名带日期戳(比如data_20240501.csv),要么靠文件的LAST_MODIFIED时间,这是批量筛选的关键。

2. 创建/使用外部阶段

如果还没建阶段,在SnowSQL里执行这条命令(替换成你的实际参数):

CREATE OR REPLACE STAGE my_s3_stage
URL = 's3://your-bucket/data-folder/'
STORAGE_INTEGRATION = s3_integration_name -- 提前配置好的存储集成
FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY = '"'); -- 替换成你的数据格式,比如PARQUET、JSON

3. 筛选近10天的目标文件

场景1:文件名包含日期(YYYYMMDD格式)

今日是2024-05-10,要选4月30日到5月10日的文件,先执行LIST命令确认范围:

LIST @my_s3_stage PATTERN = 'data_(20240430|2024050[1-9]|20240510)\\..*';

如果列出的文件符合预期,就可以进行加载。

场景2:按文件最后修改时间筛选

用SCAN_STAGE函数获取近10天修改的文件:

SELECT RELATIVE_PATH, LAST_MODIFIED
FROM TABLE(SCAN_STAGE(@my_s3_stage))
WHERE LAST_MODIFIED >= DATEADD(DAY, -10, '2024-05-10'::DATE);

这条SQL会列出所有符合时间条件的文件,确认没问题再继续。

4. 批量加载到目标表

对应场景1(文件名匹配)

直接用COPY INTO加载匹配的文件:

COPY INTO your_target_table
FROM @my_s3_stage
FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY = '"')
PATTERN = 'data_(20240430|2024050[1-9]|20240510)\\..*';

对应场景2(按修改时间)

通过子查询指定要加载的文件:

COPY INTO your_target_table
FROM (
    SELECT $1
    FROM @my_s3_stage
    WHERE RELATIVE_PATH IN (
        SELECT RELATIVE_PATH
        FROM TABLE(SCAN_STAGE(@my_s3_stage))
        WHERE LAST_MODIFIED >= DATEADD(DAY, -10, '2024-05-10'::DATE)
    )
)
FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY = '"');

5. 验证加载结果

加载完成后,查询目标表确认数据是否正确:

SELECT COUNT(*), MIN(your_date_column), MAX(your_date_column)
FROM your_target_table;

内容的提问来源于stack exchange,提问作者phoenix..

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:50:19