UNDROP DATABASE

恢复已删除数据库的最新版本。

小技巧

您还可以使用 Snowflake REST APIs 来执行此操作。有关信息,请参阅 取消删除数据库(REST 端点参考)

另请参阅:

CREATE DATABASEALTER DATABASEDESCRIBE DATABASEDROP DATABASESHOW DATABASES

语法

UNDROP DATABASE <name>
Copy

参数

name

指定要恢复的数据库的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

使用说明

  • 如果已存在同名数据库,则返回错误。

  • UNDROP 依赖于 Snowflake Time Travel 功能。仅当在 数据保留期 中删除对象后,才能恢复该对象。默认值为 24 小时。

  • 无法取消删除属于指定数据库的混合表。

  • 如果您有多个具有相同名称的已删除数据库,您可以使用 IDENTIFIER 关键字 和系统生成的标识符(来自 DATABASES 视图)来指定要恢复的数据库。恢复的数据库的名称保持不变。参阅 示例

    备注

    在为表、架构和数据库执行 UNDROP 命令时,只能使用系统生成的标识符和 IDENTIFIER() 关键字。

示例

基本示例

还原已删除数据库的最新版本(此示例基于 DROP DATABASE 示例而构建):

UNDROP DATABASE mytestdb2;
Copy
+-------------------------------------------+
| status                                    |
|-------------------------------------------|
| Database MYTESTDB2 successfully restored. |
+-------------------------------------------+
SHOW DATABASES HISTORY;
Copy
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+------------+
| created_on                      | name      | is_default | is_current | origin | owner  | comment | options | retention_time | dropped_on |
|---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+------------|
| Tue, 17 Mar 2015 16:57:04 -0700 | MYTESTDB  | N          | Y          |        | PUBLIC |         |         |              1 | [NULL]     |
| Tue, 17 Mar 2015 17:06:32 -0700 | MYTESTDB2 | N          | N          |        | PUBLIC |         |         |              1 | [NULL]     |
| Wed, 25 Feb 2015 17:30:04 -0800 | SALES1    | N          | N          |        | PUBLIC |         |         |              1 | [NULL]     |
| Fri, 13 Feb 2015 19:21:49 -0800 | DEMO1     | N          | N          |        | PUBLIC |         |         |              1 | [NULL]     |
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+------------+

使用数据库 ID UNDROP 数据库

使用 IDENTIFIER() 按 ID 恢复已删除的数据库。您可以找到特定数据库的数据库 ID,使用 DATABASES 视图 中的 database_id 列进行恢复。例如,如果您有多个名为 my_database 的已删除数据库,并且要恢复倒数第二个已删除的数据库 my_database,请执行以下步骤:

  1. 在 Account Usage DATABASES 视图中查找已删除的数据库的数据库 ID:

    SELECT database_id,
      database_name,
      created,
      deleted,
      comment
    FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES
    WHERE database_name = 'MY_DATABASE'
    AND deleted IS NOT NULL
    ORDER BY deleted;
    
    Copy
    +-------------+---------------+-------------------------------+-------------------------------+---------+
    | DATABASE_ID | DATABASE_NAME | CREATED                       | DELETED                       | COMMENT |
    |-------------+---------------+-------------------------------+-------------------------------+---------|
    |         494 | MY_DATABASE   | 2024-07-01 17:51:33.380 -0700 | 2024-07-01 17:51:46.228 -0700 | NULL    |
    |         492 | MY_DATABASE   | 2024-07-01 17:51:52.560 -0700 | 2024-07-01 17:52:39.881 -0700 | NULL    |
    |         493 | MY_DATABASE   | 2024-07-01 17:52:39.849 -0700 | 2024-07-01 17:52:44.562 -0700 | NULL    |
    +-------------+---------------+-------------------------------+-------------------------------+---------+
    
  2. 按数据库 ID 取消删除 my_database。要恢复倒数第二个已删除的数据库,请使用上一个语句的输出中的数据库 ID 492。执行以下语句后,数据库将恢复为原始名称 my_database

    UNDROP DATABASE IDENTIFIER(492);
    
    Copy
语言: 中文