- 类别:
:doc:`/sql-reference/functions-system`(系统控制)
SYSTEM$SET_CATALOG_INTEGRATION¶
替换与外部管理的 Apache Iceberg™ 表 关联的目录集成。
使用此函数可将表更新为使用 Iceberg REST 目录集成,从而支持更多 Iceberg 功能,例如 对外部管理的 Iceberg 表的写入支持。如有需要,您还可以使用此函数回滚至原始的 Glue 目录集成。
您还可以使用此函数将表从一个 Iceberg REST 目录集成 迁移到另一个。
语法¶
SYSTEM$SET_CATALOG_INTEGRATION(
'<table_name>' ,
'<new_catalog_integration_name>'
)
实参¶
'table_name'要替换目录集成的 Iceberg 表的名称。
'new_catalog_integration_name'要将指定表迁移到的目标目录集成的名称
table_name。
返回¶
该函数返回一条状态消息,指示表的目录集成已成功迁移。有关示例,请参阅 示例。
访问控制要求¶
权限 |
对象 |
|---|---|
OWNERSHIP |
正在替换目录集成的表。 |
USAGE |
当前目录集成。 |
USAGE |
目标目录集成。 |
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
您只能替换标准 Snowflake 数据库中外部管理的 Iceberg 表的目录集成。您不能替换目录链接数据库中的 Iceberg 表目录集成,也不能替换任何其他类型的 Iceberg 表目录集成。
与表关联的当前目录集成类型会限制可用作替换的目录集成类型。下表列出了将一种类型的目录集成替换为另一种类型时支持的转换:
当前目录集成类型
新目录集成类型
备注
AWS Glue Iceberg REST
AWS Glue
回退到使用 AWS Glue 目录源的目录集成。
Iceberg REST
将表迁移到备用目录集成。
不支持其他转换组合。
table_name和new_catalog_integration_name是字符串字面量,因此必须将值放在单引号内。当前目录集成和目标目录集成必须指向同一个外部目录。
当前目录集成和目标目录集成都不能启用凭据交易。
示例¶
将与名为 glue_table 的 Iceberg 表关联的 AWS Glue 目录集成替换为名为 glue_rest_catalog_int 的 AWS Glue Iceberg REST 目录集成:
SELECT SYSTEM$SET_CATALOG_INTEGRATION('glue_table', 'glue_rest_catalog_int');
示例输出:
+------------------------------------------------------------------------------------------------------------------------------+
| SYSTEM$SET_CATALOG_INTEGRATION |
+------------------------------------------------------------------------------------------------------------------------------+
| Catalog integration for table GLUE_TABLE has been migrated from 'GLUE_CATALOG_INTEGRATION' to 'GLUE_REST_CATALOG_INT' |
+------------------------------------------------------------------------------------------------------------------------------+
故障排除¶
如果该函数失败,将返回错误响应。常见的错误消息包括:
错误消息 |
情况和解决方案 |
|---|---|
SYSTEM$SET_CATALOG_INTEGRATION 不支持从目录集成 '[CURRENT_CATALOG_INTEGRATION]' 转换到 '[TARGET_CATALOG_INTEGRATION]',因为类型组合不受支持 |
提供的当前或目标目录集成与支持的目录集成类型不匹配。有关支持的类型,请参阅 使用说明。 |
SYSTEM$SET_CATALOG_INTEGRATION 无法从 '[CURRENT_CATALOG_INTEGRATION]' 转换到 '[TARGET_CATALOG_INTEGRATION]',因为目录集成配置不兼容 |
给定的目录集成属于受支持类型,但不符合支持的转换组合。有关支持的转换组合,请参阅 使用说明。 |
当前不支持对已启用凭据交易的目录集成 '[CATALOG_INTEGRATION]' 执行转换 |
提供的目录集成已启用凭据交易。请提供已禁用凭据交易的目录集成,然后重试。 |
SYSTEM$SET_CATALOG_INTEGRATION 只能用于非托管 Iceberg 表 |
提供的表不是外部管理的 Iceberg 表。请提供外部管理的 Iceberg 表,然后重试。 |