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

如何在Snowflake的COPY FILES命令中使用系统日期匹配模式

替换Snowflake COPY FILES命令中的硬编码日期为系统日期

你的需求是把COPY FILES命令中硬编码的日期替换为系统日期,实现每日自动复制对应日期文件夹下的文件。由于Snowflake的COPY FILES语句中,PATTERN参数不支持直接嵌入函数调用,需要通过动态SQL来实现日期的动态拼接。

解决方案

可以使用EXECUTE IMMEDIATE结合日期格式化函数生成动态的COPY命令,以下是两种常用实现方式:

方式1:先定义日期变量再拼接命令

-- 定义当天日期变量,格式化为YYYYMMDD格式
SET daily_date = TO_CHAR(CURRENT_DATE(), 'YYYYMMDD');

-- 执行动态生成的COPY FILES命令
EXECUTE IMMEDIATE $$
COPY FILES
INTO @STG_RAW_DPT_UPLOAD_ARCHIVE
FROM @STG_RAW_DPT_UPLOAD
PATTERN = '^dpt' || $daily_date || '.*'
$$;

方式2:直接在动态SQL中格式化日期

EXECUTE IMMEDIATE $$
COPY FILES
INTO @STG_RAW_DPT_UPLOAD_ARCHIVE
FROM @STG_RAW_DPT_UPLOAD
PATTERN = '^dpt' || TO_CHAR(CURRENT_DATE(), 'YYYYMMDD') || '.*'
$$;

补充说明

  • CURRENT_DATE()返回Snowflake会话时区的当前日期,若需使用UTC日期,可替换为CURRENT_DATE('UTC')
  • 两种方式都会自动将当天日期转为YYYYMMDD格式,确保每日运行时仅匹配对应日期的文件夹文件
  • 若要实现每日自动执行,可将这段动态SQL封装到Snowflake的**任务(Task)**中,设置每日调度周期即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:59:52