UNDROP TABLE

恢复已删除表的最新版本。

另请参阅:

CREATE TABLEALTER TABLEDROP TABLESHOW TABLESDESCRIBE TABLE

语法

UNDROP TABLE <name>
Copy

参数

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;
Copy
+---------------------------------+
| status                          |
|---------------------------------|
| Table T2 successfully restored. |
+---------------------------------+

根据表 ID UNDROP 表

使用 IDENTIFIER() 按 ID 恢复已删除的表您可以在 TABLES 视图 中的 table_id 列找到要取消删除的特定表的表 ID。例如,如果您有多个名为 my_table 的已删除表,并且要恢复倒数第二个已删除的表 my_table,请执行以下步骤:

  1. 在 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;
    
    Copy
    +----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------+
    | 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    |
    +----------+------------+--------------+---------------+-------------------------------+-------------------------------+---------+
    
  2. 按表 ID 取消删除 my_table。要恢复倒数第二个已删除的表,请使用上一语句输出中的表 ID 408578。执行以下语句后,表将以其原始名称 my_table 恢复:

    UNDROP TABLE IDENTIFIER(408578);
    
    Copy
语言: 中文