UNDROP SCHEMA

恢复已删除架构的最新版本。

另请参阅:

CREATE SCHEMAALTER SCHEMADESCRIBE SCHEMADROP SCHEMASHOW SCHEMAS

语法

UNDROP SCHEMA <name>
Copy

参数

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;
Copy
+----------------------------------------+
| status                                 |
|----------------------------------------|
| Schema MYSCHEMA successfully restored. |
+----------------------------------------+
SHOW SCHEMAS HISTORY;
Copy
+---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+------------+
| 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,请执行以下步骤:

  1. 在账户使用情况 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;
    
    Copy
    +-----------+-------------+---------------+-------------------------------+-------------------------------+---------+
    | 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    |
    +-----------+-------------+---------------+-------------------------------+-------------------------------+---------+
    
  2. 使用架构 ID 取消删除架构 s1。要恢复倒数第二个已删除的架构,请使用上一语句输出的架构 ID``798``。执行以下语句后,架构将以其原始名称 s1 恢复:

    UNDROP SCHEMA IDENTIFIER(798);
    
    Copy
语言: 中文