CREATE CATALOG INTEGRATION (Snowflake Postgres)

在账户中创建新的目录集成,或替换现有的目录集成,以便 Snowflake Postgres 访问由 Snowflake Postgres 实例管理的 Apache Iceberg™ 表。

另请参阅:

ALTER CATALOG INTEGRATION、DROP CATALOG INTEGRATION、SHOW CATALOG INTEGRATIONS、DESCRIBE CATALOG INTEGRATION

语法

CREATE [ OR REPLACE ] CATALOG INTEGRATION [ IF NOT EXISTS ] <name>
  CATALOG_SOURCE = SNOWFLAKE_POSTGRES
  TABLE_FORMAT = ICEBERG
  [ CATALOG_NAMESPACE = '<namespace>' ]
  REST_CONFIG = (
    restConfigParams
  )
  ENABLED = { TRUE | FALSE }
  [ COMMENT = '<string_literal>' ]

其中:

restConfigParams ::=

POSTGRES_INSTANCE = '<instance_name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
[ CATALOG_NAME = '<database_name>' ]

参数

name

用于指定目录集成的标识符(名称)的字符串;在账户中必须唯一。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

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

CATALOG_SOURCE = SNOWFLAKE_POSTGRES

指定目录源源是一个 Snowflake Postgres 实例。

TABLE_FORMAT = ICEBERG

将 ICEBERG 指定为目录提供的表格式。

CATALOG_NAMESPACE = 'namespace'

(可选)为此目录集成发现的表指定默认的模式命名空间。例如 'public'。

ENABLED = { TRUE | FALSE }

指定目录集成是否可用于 Iceberg 表。

  • TRUE 允许用户创建引用此集成的新 Iceberg 表。

  • FALSE 阻止用户创建引用此集成的新 Iceberg 表。

该值不区分大小写。

默认为 TRUE。

COMMENT = 'string_literal'

字符串(字面量),用于指定集成注释。

默认:无值

REST 配置参数 (restConfigParams)

POSTGRES_INSTANCE = 'instance_name'

指定 Snowflake Postgres 实例的名称。必填。Postgres 实例必须处于 READY 状态。要创建 Postgres 实例,请参阅 CREATE POSTGRES INSTANCE。

ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS

指定用于访问云存储中表数据和元数据的访问委托模式。唯一支持的值是 VENDED_CREDENTIALS。

CATALOG_NAME = 'database_name'

(可选)指定默认的 Postgres 数据库名称。您可以按每个表或每个目录链接数据库覆盖此值。

访问控制要求

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

权限

对象

备注

CREATE INTEGRATION

账户

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

USAGE

Postgres 实例

在由 POSTGRES_INSTANCE 指定的 Postgres 实例上是必需的。

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

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

示例

以下示例为 Snowflake Postgres 实例创建目录集成:

CREATE CATALOG INTEGRATION my_postgres_catalog_int
  CATALOG_SOURCE = SNOWFLAKE_POSTGRES
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'public'
  REST_CONFIG = (
    POSTGRES_INSTANCE = 'my_pg_instance'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
    CATALOG_NAME = 'my_database'
  )
  ENABLED = TRUE;