UNDROP SCHEMA¶
恢复已删除架构的最新版本。
语法¶
UNDROP SCHEMA <name>
参数¶
name
指定要恢复的架构的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
使用说明¶
架构只能恢复到将其删除时包含该架构的数据库中。例如,如果您在数据库
db1
中创建并删除了架构s1
,然后将当前数据库更改为db2
,并尝试按 ID(或完全限定名称,db1.s1
)还原架构s1
,则架构s1
将恢复到数据库db1
,而非当前的数据库db2
。如果已存在同名架构,则返回错误。
UNDROP 依赖于 Snowflake Time Travel 功能。仅当在 数据保留期 中删除对象后,才能恢复该对象。默认值为 24 小时。
无法取消删除属于指定架构的混合表。
如果您有多个具有相同名称的已删除架构,可以使用 IDENTIFIER 关键字 和系统生成的标识符(来自 SCHEMATA 视图)来指定要恢复的架构。恢复的架构的名称保持不变。参阅 示例。
备注
在为表、架构和数据库执行 UNDROP 命令时,只能使用系统生成的标识符和 IDENTIFIER() 关键字。
示例¶
基本示例¶
恢复已删除架构的最近版本(此示例基于为 DROP SCHEMA 提供的示例而构建):
UNDROP SCHEMA myschema;
+----------------------------------------+
| status |
|----------------------------------------|
| Schema MYSCHEMA successfully restored. |
+----------------------------------------+
SHOW SCHEMAS HISTORY;
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+------------+
| created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | dropped_on |
|---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+------------|
| Fri, 13 May 2016 17:26:07 -0700 | INFORMATION_SCHEMA | N | N | MYTESTDB | | Views describing the contents of schemas in this database | | 1 | [NULL] |
| Tue, 17 Mar 2015 17:18:42 -0700 | MYSCHEMA | N | N | MYTESTDB | PUBLIC | | | 1 | [NULL] |
| Tue, 17 Mar 2015 16:57:04 -0700 | PUBLIC | N | Y | MYTESTDB | PUBLIC | | | 1 | [NULL] |
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+------------+
使用架构 ID UNDROP 架构¶
使用 IDENTIFIER() 通过 ID 恢复已删除的架构您可以在 SCHEMATA 视图 中的 schema_id
列找到要取消删除的特定架构的架构 ID。例如,如果您有多个名为 s1
的已删除架构,并且要恢复倒数第二个已删除的架构 s1
,请执行以下步骤:
在账户使用情况 SCHEMATA 视图中查找已删除架构的架构 ID:
SELECT schema_id, schema_name, catalog_name, created, deleted, comment FROM SNOWFLAKE.ACCOUNT_USAGE.SCHEMATA WHERE schema_name = 'S1' AND catalog_name = 'DB1' AND deleted IS NOT NULL ORDER BY deleted;
+-----------+-------------+---------------+-------------------------------+-------------------------------+---------+ | SCHEMA_ID | SCHEMA_NAME | CATALOG_NAME | CREATED | DELETED | COMMENT | |-----------+-------------+---------------+-------------------------------+-------------------------------+---------| | 797 | S1 | DB1 | 2024-07-01 17:53:01.955 -0700 | 2024-07-01 17:53:11.889 -0700 | NULL | | 798 | S1 | DB1 | 2024-07-01 17:53:11.889 -0700 | 2024-07-01 17:53:16.327 -0700 | NULL | | 799 | S1 | DB1 | 2024-07-01 17:53:16.327 -0700 | 2024-07-01 17:53:25.066 -0700 | NULL | +-----------+-------------+---------------+-------------------------------+-------------------------------+---------+
使用架构 ID 取消删除架构
s1
。要恢复倒数第二个已删除的架构,请使用上一语句输出的架构 ID``798``。执行以下语句后,架构将以其原始名称s1
恢复:UNDROP SCHEMA IDENTIFIER(798);