Snowflake中多次重建表后的数据恢复问题求助
数据恢复方案:CREATE OR REPLACE重建表后的补救措施
问题原因分析
多次使用CREATE OR REPLACE TABLE会直接生成新的表对象,原表被标记为删除状态:
- 时光旅行查询的
OFFSET是基于当前表对象的创建时间倒推,而原表的存在时间早于新表创建时间,导致提示超出期限 UNDROP TABLE失败通常是因为原表的保留时间已过时光旅行窗口,或是原表的元数据已被系统清理
可行恢复方法
精准定位原表时间戳查询
先查询表的历史记录,找到原表的存在时间段:SHOW TABLE HISTORY LIKE '{MY_TABLE}';从结果中提取原表的
created_on和dropped_on时间,用具体时间戳执行时光旅行查询:SELECT * FROM {MY_TABLE} AT (TIMESTAMP => '<原表存在的有效时间戳>');查到数据后可插入到新表或重命名后的表中。
检查克隆/快照备份
如果之前对该表创建过克隆(CREATE TABLE ... CLONE {MY_TABLE})或快照,直接从克隆表中提取数据。从增量加载源恢复
由于采用增量加载,可通过加载历史回溯数据源:- 查看COPY INTO的历史记录,获取之前的加载文件路径:
SHOW COPY HISTORY FOR TABLE {MY_TABLE}; - 查看任务运行日志(如果用Task执行增量加载):
SHOW TASK HISTORY LIKE '<加载任务名>';
根据记录重新从源存储(如S3、Azure Blob)加载对应批次的增量数据。
- 查看COPY INTO的历史记录,获取之前的加载文件路径:
联系Snowflake官方支持
若以上方法均无效,提交工单给Snowflake支持团队。系统底层可能仍保留未被彻底清理的历史数据,尤其是时光旅行保留期刚过期的场景,官方有更高权限的恢复手段。
内容的提问来源于stack exchange,提问作者eavom
相关产品推荐
相关产品推荐

