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

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

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 权限。

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

有关对 安全对象 执行 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
语言: 中文