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

Snowflake查询原表与备份表SQL问题:缺失emp_0101bkp结果

修正Snowflake查询原表关联备份表的SQL

问题分析

你的现有SQL大概率仅匹配了以_bkp结尾的表(如emp_bkp),但emp_0101bkp属于「原表名+日期后缀+bkp」的命名格式,不在原有匹配规则范围内,因此被遗漏。

修正后的SQL(通用匹配版)

SELECT 
    TABLE_NAME AS backup_table_name,
    'emp' AS original_table_name
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    -- 替换为你的实际数据库和模式名
    TABLE_CATALOG = '你的数据库名'
    AND TABLE_SCHEMA = '你的模式名'
    -- 匹配以emp开头、名称包含bkp的表
    AND TABLE_NAME LIKE 'emp%bkp'
    -- 排除明确不属于备份的表
    AND TABLE_NAME NOT IN ('emp_test', 'em_copy')

更精准的正则匹配版(推荐)

如果你的备份表命名规则是「emp开头,最终以bkp结尾」(包含emp_bkp和emp_0101bkp这类格式),可以用正则表达式更精准匹配:

SELECT 
    TABLE_NAME AS backup_table_name,
    'emp' AS original_table_name
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_CATALOG = '你的数据库名'
    AND TABLE_SCHEMA = '你的模式名'
    -- 正则匹配:以emp开头,可选中间后缀,最终以bkp结尾
    AND REGEXP_LIKE(TABLE_NAME, '^emp(_.+)?bkp$')
    AND TABLE_NAME NOT IN ('emp_test', 'em_copy')

关键调整说明

  • 匹配规则拓展:从仅匹配%_bkp改为覆盖所有包含bkp且以emp开头的表,或用正则锁定「emp开头+bkp结尾」的格式,确保不会遗漏带日期后缀的备份表。
  • 排除非备份表:通过NOT IN过滤emp_test、em_copy这类测试/副本表,避免误判。
  • 限定范围:加上TABLE_CATALOG和TABLE_SCHEMA,避免查询到其他库或模式下的同名表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:42:21