Snowflake瞬态表能否在数据库重启后留存?如何用Time Travel恢复?
Snowflake瞬态表(Transient Tables)常见问题解答
瞬态表在数据库重启后是否留存?
瞬态表不会因为数据库重启被删除,它的存在和数据库重启操作完全无关。只有两种情况会导致瞬态表被彻底清理:
- 主动执行
DROP TABLE命令删除表; - 表的Time Travel保留期(加上可选的Fail-safe期,但瞬态表默认Fail-safe为0天)到期后,Snowflake会自动清理表的历史数据和元数据。
如何用Time Travel恢复瞬态表数据?
瞬态表不纳入Snowflake的常规备份日志,但依然支持Time Travel功能,恢复逻辑如下:
- 先确认表的Time Travel保留期:执行
DESCRIBE TABLE <你的表名>,查看结果里的RETENTION_TIME字段(单位是天,默认1天,最多可设到90天)。 - 如果数据丢失发生在保留期内,可通过以下方式恢复:
- 克隆表到指定时间点生成新表:
CREATE TABLE <新表名> CLONE <原表名> AT(OFFSET => -<秒数>);或用具体时间戳:CREATE TABLE <新表名> CLONE <原表名> AT(TIMESTAMP => 'YYYY-MM-DD HH:MI:SS'); - 恢复特定行到原表:
INSERT INTO <原表名> SELECT * FROM <原表名> AT(OFFSET => -<秒数>) WHERE <过滤条件>;
- 克隆表到指定时间点生成新表:
- 注意:如果超过Time Travel保留期,且瞬态表未配置Fail-safe(默认无),数据就无法恢复了——因为这类表不会被备份到Snowflake的长期存储中。
内容的提问来源于stack exchange,提问作者Doug Dailey
相关产品推荐
相关产品推荐

