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