UNDROP DATABASE¶
恢复已删除数据库的最新版本。
小技巧
您还可以使用 Snowflake REST APIs 来执行此操作。有关信息,请参阅 取消删除数据库(REST 端点参考)。
语法¶
UNDROP DATABASE <name>
参数¶
name
指定要恢复的数据库的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
使用说明¶
如果已存在同名数据库,则返回错误。
UNDROP 依赖于 Snowflake Time Travel 功能。仅当在 数据保留期 中删除对象后,才能恢复该对象。默认值为 24 小时。
无法取消删除属于指定数据库的混合表。
如果您有多个具有相同名称的已删除数据库,您可以使用 IDENTIFIER 关键字 和系统生成的标识符(来自 DATABASES 视图)来指定要恢复的数据库。恢复的数据库的名称保持不变。参阅 示例。
备注
在为表、架构和数据库执行 UNDROP 命令时,只能使用系统生成的标识符和 IDENTIFIER() 关键字。
示例¶
基本示例¶
还原已删除数据库的最新版本(此示例基于 DROP DATABASE 示例而构建):
UNDROP DATABASE mytestdb2;
+-------------------------------------------+
| status |
|-------------------------------------------|
| Database MYTESTDB2 successfully restored. |
+-------------------------------------------+
SHOW DATABASES HISTORY;
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+------------+
| 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
,请执行以下步骤:
在 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;
+-------------+---------------+-------------------------------+-------------------------------+---------+ | 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 | +-------------+---------------+-------------------------------+-------------------------------+---------+
按数据库 ID 取消删除
my_database
。要恢复倒数第二个已删除的数据库,请使用上一个语句的输出中的数据库 ID492
。执行以下语句后,数据库将恢复为原始名称my_database
:UNDROP DATABASE IDENTIFIER(492);