UNDROP TABLE 语句

使用

UNDROP TABLE
UNDROP TABLE
语句可以恢复被删除的表、动态表和物化视图。是否可以恢复被删除的对象取决于表的 数据保留周期

数据保留周期

对象能否被恢复取决于数据保留周期(

data_retention_days
data_retention_days
)。Lakehouse 默认保留周期为 1 天(24 小时)。您可以通过 ALTER TABLE 命令调整保留周期,取值范围为 0-90 天

-- 查看当前保留周期 SHOW CREATE TABLE my_table; -- 修改保留周期为 7 天 ALTER TABLE my_table SET PROPERTIES ('data_retention_days'='7');

支持的对象类型

UNDROP TABLE
UNDROP TABLE
可恢复以下类型的对象:

被删除的对象删除命令恢复命令
普通表(TABLE)
DROP TABLE
DROP TABLE
UNDROP TABLE
UNDROP TABLE
动态表(DYNAMIC TABLE)
DROP DYNAMIC TABLE
DROP DYNAMIC TABLE
UNDROP TABLE
UNDROP TABLE
物化视图(MATERIALIZED VIEW)
DROP MATERIALIZED VIEW
DROP MATERIALIZED VIEW
UNDROP TABLE
UNDROP TABLE
Table Stream
DROP TABLE STREAM
DROP TABLE STREAM
UNDROP TABLE
UNDROP TABLE

语法

UNDROP TABLE [schema_name.]<table_name>

参数说明

参数说明
schema_name
schema_name
可选。指定 schema 的名称
table_name
table_name
被删除的表/动态表/物化视图的名称

示例

示例 1:删除表后立即恢复

-- 创建表 CREATE TABLE mytable(id INT, name STRING); INSERT INTO mytable VALUES(1, 'aaa'); -- 删除表 DROP TABLE mytable; -- 查看表删除记录 SHOW TABLES HISTORY; +---------------+------------+-------------------------+----------+------+-------+---------+----------------+-------------------------+ | schema_name | table_name | create_time | creator | rows | bytes | comment | retention_time | delete_time | +---------------+------------+-------------------------+----------+------+-------+---------+----------------+-------------------------+ | my_schema | mytable | 2023-06-06 12:22:57.642 | UAT_TEST | 1 | 1348 | | 1 | 2023-07-18 17:49:26.374 | +---------------+------------+-------------------------+----------+------+-------+---------+----------------+-------------------------+ -- 恢复表 UNDROP TABLE mytable; -- 验证恢复结果 SELECT * FROM mytable; +----+------+ | id | name | +----+------+ | 1 | aaa | +----+------+

示例 2:删除表后创建同名表再恢复

如果删除表后创建了同名表,需先重命名新表才能恢复旧表:

-- 创建并删除表 CREATE TABLE mytable(id INT, name STRING); INSERT INTO mytable VALUES(1, 'aaa'); DROP TABLE mytable; -- 重复建表 CREATE TABLE mytable(col1 INT, col2 STRING); -- 重命名新表 ALTER TABLE mytable RENAME TO mytable_backup; -- 恢复旧表 UNDROP TABLE mytable;

示例 3:恢复动态表

-- 创建基表 CREATE TABLE dy_base_a (i INT, j INT); INSERT INTO dy_base_a VALUES (1, 10), (2, 20), (3, 30), (4, 40); -- 创建动态表 CREATE DYNAMIC TABLE change_table (i, j) AS SELECT * FROM dy_base_a; REFRESH DYNAMIC TABLE change_table; -- 查询数据 SELECT * FROM change_table; +---+----+ | i | j | +---+----+ | 1 | 10 | | 2 | 20 | | 3 | 30 | | 4 | 40 | +---+----+ -- 删除并恢复动态表 DROP DYNAMIC TABLE change_table; UNDROP TABLE change_table; -- 验证恢复(动态表属性保持不变) SELECT * FROM change_table;

示例 4:恢复物化视图

-- 创建基表 CREATE TABLE mv_base_a (i INT, j INT); INSERT INTO mv_base_a VALUES (1, 10), (2, 20), (3, 30), (4, 40); -- 创建物化视图 CREATE MATERIALIZED VIEW mv1 (i, j) AS SELECT * FROM mv_base_a; REFRESH MATERIALIZED VIEW mv1; -- 删除物化视图 DROP MATERIALIZED VIEW mv1; -- 查看删除记录 SHOW TABLES HISTORY WHERE table_name = 'mv1'; -- 恢复物化视图 UNDROP TABLE mv1; -- 验证恢复 SELECT * FROM mv1;

注意事项

  • 保留周期内恢复:必须在

    data_retention_days
    data_retention_days
    保留周期内进行恢复操作,超出周期后数据将被物理删除,无法恢复。

  • 同名对象冲突:恢复前需确保没有同名对象存在。如有同名对象,请先重命名或删除。

  • 恢复后属性保持

    • 普通表恢复后保持原有表结构、数据和属性(包括
      data_retention_days
      data_retention_days
      data_lifecycle
      data_lifecycle
      等)
    • 动态表恢复后保持原有的刷新配置(REFRESH INTERVAL、VCLUSTER 等)
    • 物化视图恢复后保持原有的查询定义
  • 不支持恢复的对象:普通视图(VIEW)、外部表(EXTERNAL TABLE)、索引、函数、连接等对象删除后不可恢复。

相关文档

联系我们
预约咨询
微信咨询
电话咨询