CREATE CATALOG INTEGRATION (Snowflake Postgres)

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

另请参阅:

ALTER CATALOG INTEGRATIONDROP CATALOG INTEGRATIONSHOW CATALOG INTEGRATIONSDESCRIBE 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;