- 类别:
: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 |
目标目录集成。 |
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.
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
您只能替换标准 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 表,然后重试。 |