DROP ICEBERG TABLE

从当前/指定的架构中移除 Apache Iceberg™ 表,但保留 Iceberg 表的某个版本,以便可以使用 UNDROP ICEBERG TABLE 将其恢复。有关更多信息,请参阅 ` 使用说明 `_ (本主题内容)。

请注意,本主题将 Iceberg 表简称为“表”,除非指定 Iceberg 表 以避免混淆。

另请参阅:

CREATE ICEBERG TABLESHOW ICEBERG TABLESUNDROP ICEBERG TABLE

语法

DROP [ ICEBERG ] TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Copy

参数

name

指定要删除的表的标识符。如果标识符包含空格、特殊字符或大小写混合字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写(例如,"My Object")。

如果表标识符不是完全限定的(以 db_name.schema_name.table_nameschema_name.table_name 的形式),则该命令将在会话的当前架构中查找表。

CASCADE | RESTRICT

指定如果存在引用该表的外键,是否可以删除该表:

  • 即使表具有被其他表中的外键引用的主键/唯一键,CASCADE 也会删除该表。

  • RESTRICT 会返回有关现有外键引用的警告,并且不会删除该表。

默认:CASCADE

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

OWNERSHIP

Iceberg 表

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

USAGE

外部卷

USAGE

集成(目录)

如果 Iceberg 表使用外部目录,则为必填项。

Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 对于启用了写入功能的 外部管理的 Iceberg 表,Snowflake 还会指示您的外部 Iceberg REST 目录删除该表。Snowflake 会调用您的远程 Iceberg 目录,指示它会删除该表并删除该表的底层数据和元数据。

    只有在确认表已成功从远程目录中删除后,Snowflake 才会删除该表。

    备注

    如果您使用 AWS Glue 数据目录作为外部目录,则通过 Snowflake 删除外部管理的表不会删除基础表文件。此行为特定于 AWS Glue Data Catalog 的实现。

  • 删除表不会将其从系统中永久移除。Snowflake 会在 Time Travel 中保留已删除表的版本,而保留天数由该表的 DATA_RETENTION_TIME_IN_DAYS 参数指定。有关更多信息,请参阅 Iceberg 表的元数据和快照

  • 在 Time Travel 保留期内,您可以使用 UNDROP ICEBERG TABLE 命令恢复已还原的表。

  • 已删除的表清除之后便无法恢复,只能重新创建。

  • 删除表后,创建同名表将会创建该表的新版本。您可以通过以下步骤还原先前表的已删除版本:

    1. 将表的当前版本重命名为其他名称。

    2. 使用 UNDROP ICEBERG TABLE 命令还原先前的版本。

  • 在删除表之前,请验证 :emph:` 没有 ` 视图引用该表。删除视图引用的表会导致视图失效(查询视图会返回“对象不存在”错误)。

  • 如果指定了 IF EXISTS 子句,而目标对象不存在,该命令会成功完成,不会返回错误。

示例

删除表:

DROP ICEBERG TABLE t2;

+--------------------------+
| status                   |
|--------------------------|
| T2 successfully dropped. |
+--------------------------+
Copy

再次删除该表,但如果该表不存在,则不会引发错误:

DROP ICEBERG TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+
Copy
语言: 中文