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);