Snowflake中误执行CREATE OR REPLACE TABLE后能否撤销操作?
解决方案
可以通过Snowflake的**时间旅行(Time Travel)**功能恢复原表数据,前提是表所在的数据库/仓库时间旅行保留期覆盖了错误操作的时间点(默认保留1天,企业版等可配置更长时长)。
先验证原表在错误操作前的完整数据:
SELECT * FROM myschema.public.table1 BEFORE(OFFSET => -<错误操作至今的分钟数>)替换
<错误操作至今的分钟数>为实际数值,比如操作后过了15分钟就填15。确认数据无误后,执行以下语句恢复原表:
CREATE OR REPLACE TABLE myschema.public.table1 AS SELECT * FROM myschema.public.table1 BEFORE(OFFSET => -<错误操作至今的分钟数>)稳妥起见,也可以先创建备份表再替换原表:
-- 创建原表备份 CREATE TABLE myschema.public.table1_backup AS SELECT * FROM myschema.public.table1 BEFORE(OFFSET => -<错误操作至今的分钟数>); -- 恢复原表 CREATE OR REPLACE TABLE myschema.public.table1 AS SELECT * FROM myschema.public.table1_backup;
如果时间旅行保留期已过,只能依赖之前的克隆表或手动备份恢复,无法通过时间旅行找回数据。
内容的提问来源于stack exchange,提问作者YoungProgrammer1009
相关产品推荐
相关产品推荐

