ALTER ICEBERG TABLE ...CONVERT TO MANAGED

将使用外部 Iceberg 目录的 Apache Iceberg 表 转换为使用 Snowflake 作为目录(Snowflake 管理的 Iceberg 表)的表。

转换后的表支持读取和写入操作,Snowflake 处理表的所有生命周期维护,例如压缩。有关更多信息,请参阅 表转换前后

另请参阅:

CREATE ICEBERG TABLEDROP ICEBERG TABLESHOW ICEBERG TABLESDESCRIBE ICEBERG TABLE

语法

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> CONVERT TO MANAGED
  [ BASE_LOCATION = '<directory_for_table_files>' ]
  [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
Copy

参数

table_name

要转换的表的标识符。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

[ BASE_LOCATION = 'directory_for_table_files' ]

Snowflake 可在其中写入表的数据和元数据文件所在目录的路径。指定从表 EXTERNAL_VOLUME 的位置开始的相对路径。有关更多信息,请参阅 数据和元数据目录

如果原始 CREATE ICEBERG TABLE 语句不允许或不包含 BASE_LOCATION,则必须为此属性指定一个值。

转换表后,此目录无法更改。

STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }

为表指定存储序列化策略。如果在转换期间未指定,表将继承在架构、数据库或账户级别设置的值。如果在任何级别均未指定该值,表将使用默认值。

转换表格后不能变更此参数的值。

  • COMPATIBLE:Snowflake 执行编码和压缩,确保与第三方计算引擎的互操作性。

  • OPTIMIZED:Snowflake 执行编码和压缩,可确保 Snowflake 中的最佳表性能。

默认:OPTIMIZED

访问控制要求

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

权限

对象

备注

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

目录集成

要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。

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

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

使用说明

  • 只有表所有者(即对表具有 OWNERSHIP 权限的角色)或更高级别才能执行此命令。

  • 不支持在目录链接的数据库中转换表。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

以下示例使用 ALTER ICEBERG TABLE ...CONVERT TO MANAGED 语句,将 Snowflake 不管理的表转换为使用 Snowflake 作为 Iceberg 目录的表。

ALTER ICEBERG TABLE myTable CONVERT TO MANAGED
  BASE_LOCATION = 'my/relative/path/from/external_volume';
Copy
语言: 中文