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
相关产品推荐
相关产品推荐

