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

在GBQ标准SQL中创建表时为表名添加当日日期的实现方法

解决BigQuery每日备份表的存储过程实现方案

嘿,作为BigQuery新手碰到这个需求太正常了,我来给你一步步说明怎么实现!

你需要的是动态生成带当日日期的表名,然后创建备份表,这在BigQuery里得用动态SQL来实现,因为静态SQL没法直接拼接表名。下面是完整的存储过程代码,你可以直接在Query Editor里创建并使用:

存储过程代码

#Standard SQL
CREATE OR REPLACE PROCEDURE `xxx.xxx.create_daily_applications_backup`()
BEGIN
  -- 声明变量存储日期后缀和备份表名
  DECLARE date_suffix STRING;
  DECLARE target_table STRING;

  -- 生成当日日期的后缀,格式为YYYYMMDD(你可以根据需求调整格式)
  SET date_suffix = FORMAT_DATE('%Y%m%d', CURRENT_DATE());

  -- 拼接完整的备份表名
  SET target_table = CONCAT('`xxx.xxx.applications_', date_suffix, '`');

  -- 动态执行创建备份表的语句
  EXECUTE IMMEDIATE CONCAT(
    'CREATE OR REPLACE TABLE ', target_table, 
    ' AS SELECT * FROM `yyy.yyy.applications`'
  );
END;

代码说明

  • FORMAT_DATE('%Y%m%d', CURRENT_DATE()):把当前日期转换成YYYYMMDD格式的字符串,比如今天是2024年5月20日,就会生成20240520;如果想要YYYY-MM-DD格式,改成'%Y-%m-%d'即可。
  • CONCAT:用来拼接表名字符串,注意要用反引号把完整表名包裹起来,避免特殊字符或关键字的问题。
  • EXECUTE IMMEDIATE:BigQuery里执行动态SQL的关键字,能把拼接好的SQL语句当成静态SQL来执行。

怎么使用

  1. 把上面的代码里的xxx.xxx替换成你实际的项目ID和数据集ID,yyy.yyy.applications替换成源表的完整路径。
  2. 在Query Editor里运行这段代码,创建存储过程。
  3. 执行存储过程来创建当日备份表:
CALL `xxx.xxx.create_daily_applications_backup`();

额外注意事项

  • 确保你有足够的权限:需要能在目标数据集里创建表,同时能读取源表的数据。
  • 如果需要保留历史备份,不要用CREATE OR REPLACE TABLE,改成CREATE TABLE,这样如果当天重复执行会报错,避免覆盖之前的备份;如果希望当天重复执行时覆盖,就保留OR REPLACE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:02:56