UNDROP TABLE¶
恢复已删除表的最新版本。
语法¶
UNDROP TABLE <name>
参数¶
name
指定要还原的表的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
使用说明¶
表只能恢复到将其删除时包含该表的数据库和架构中。例如,如果您在架构
s1
中创建并删除表t1
,然后将当前架构更改为s2
,并尝试按 ID(或限定名称s1.t1
)恢复表t1
,则表t1
将恢复到架构s1
,而非当前的架构s2
。如果已存在同名表,则返回错误。
如果您有多个具有相同名称的已删除表,可以使用 IDENTIFIER 关键字 和系统生成的标识符(来自 TABLES 视图)来指定要恢复的表。恢复的表的名称保持不变。参阅 示例。
备注
在为表、架构和数据库执行 UNDROP 命令时,只能使用系统生成的标识符和 IDENTIFIER() 关键字。
UNDROP 依赖于 Snowflake Time Travel 功能。仅当在 数据保留期 中删除对象后,才能恢复该对象。默认值为 24 小时。
您无法取消删除混合表。
示例¶
基本示例¶
还原已删除表的最新版本(此示例基于为 DROP TABLE 提供的示例构建):
UNDROP TABLE t2;
+---------------------------------+
| status |
|---------------------------------|
| Table T2 successfully restored. |
+---------------------------------+
根据表 ID UNDROP 表¶
使用 IDENTIFIER() 按 ID 恢复已删除的表您可以在 TABLES 视图 中的 table_id
列找到要取消删除的特定表的表 ID。例如,如果您有多个名为 my_table
的已删除表,并且要恢复倒数第二个已删除的表 my_table
,请执行以下步骤:
在 Account Usage TABLES 视图中查找已删除表的表 ID:
SELECT table_id, table_name, table_schema, table_catalog, created, deleted, comment FROM SNOWFLAKE.ACCOUNT_USAGE.TABLES WHERE table_catalog = 'DB1' AND table_schema = 'S1' AND table_name = 'MY_TABLE' AND deleted IS NOT NULL ORDER BY deleted;
+----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------+ | TABLE_ID | TABLE_NAME | TABLE_SCHEMA | TABLE_CATALOG | CREATED | DELETED | COMMENT | |----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------| | 408578 | MY_TABLE | S1 | DB1 | 2024-07-01 15:39:07.565 -0700 | 2024-07-01 15:40:28.161 -0700 | NULL | +----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------+ | 408607 | MY_TABLE | S1 | DB1 | 2024-07-01 17:43:07.565 -0700 | 2024-07-01 17:44:28.161 -0700 | NULL | +----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------+
按表 ID 取消删除
my_table
。要恢复倒数第二个已删除的表,请使用上一语句输出中的表 ID408578
。执行以下语句后,表将以其原始名称my_table
恢复:UNDROP TABLE IDENTIFIER(408578);