创建连接

适用于:勾选标记为“是” Databricks SQL 勾选标记为“是” Databricks Runtime 13.3 LTS 及更高版本 勾选标记为“是” 仅限 Unity Catalog

此命令使用提供远程系统位置和身份验证详细信息的系统特定选项创建一个外部连接(或服务器),它代表特定类型的远程数据系统。

外部连接能启用联合查询

语法

CREATE CONNECTION [IF NOT EXISTS] connection_name
  TYPE connection_type
  OPTIONS ( option value [, ...] )
  [ COMMENT comment ]

为了符合标准,还可以使用 SERVER 而不是 CONNECTION

参数

  • connection_name

    Unity Catalog 元存储级别的连接的唯一标识符。

  • connection_type

    标识连接的类型,并且必须是以下类型之一:

    • DATABRICKS
    • 适用于:HTTP Databricks SQL 勾选标记为“是” Databricks Runtime 16.2 及更高版本
    • MYSQL
    • POSTGRESQL
    • REDSHIFT
    • SNOWFLAKE
    • SQLDW (Synapse)
    • SQLSERVER
  • OPTIONS

    设置建立连接所需的 connection_type 特定参数。

    • 选项

      属性键。 该键可以包含一个或多个 点或 STRING 文本分隔的标识符。

      属性键必须唯一,且区分大小写。

    • 价值

      属性的值。 值必须是 BOOLEANSTRINGINTEGERDECIMAL 常数表达式。 该值也可以是对 SECRET SQL 函数的调用。 例如,valuepassword 可以包含 secret('secrets.r.us', 'postgresPassword') 而不是输入文本密码。

HTTP 选项

适用于: Databricks SQL 勾选“是” Databricks Runtime 16.2 及更高版本

HTTP 连接类型支持以下选项键和值:

  • host

    STRING 文本。 指定用于外部服务的 host_name。 如果主机路径不是规范化 URL,则会引发异常。

  • bearer_token

    STRING 函数的 文本或调用。 进行外部服务调用时要使用的身份验证令牌。 例如,该值可能构成 secret('secrets.r.us', 'httpPassword') ,而不是输入文本密码。

  • port 指定端口的可选 INTEGER 字面量。 默认值为 443;

  • base_path

    可选的 STRING 文本。 默认值为 /。 如果路径包含空字符串或包含空格或特殊字符的错误路径,则会引发异常。

示例

-- Create a postgresql connection
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
      host 'qf-postgresql-demo.xxxxxx.cn-north-2.rds.amazonaws.com',
      port '5432',
      user 'postgresql_user',
      password 'password123');

-- Create a postgresql connection with secret scope
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.cn-north-2.rds.amazonaws.com',
       port '5432',
       user secret('secrets.r.us', 'postgresUser'),
       password secret('secrets.r.us', 'postgresPassword'));

-- Set up a connect to Slack.
> CREATE CONNECTION slack_conn
  TYPE HTTP
  OPTIONS (
    host 'https://slack.com',
    port '443',
    base_path '/api/',
    bearer_token 'xoxb-xxxxx'
  );

-- Request to the external service
> SELECT http_request(
    conn => 'slack_conn',
    method => 'POST',
    path => '/chat.postMessage',
    json => to_json(named_struct(
      'channel', channel,
      'text', text
    ))
    headers => map(
       'Accept', "application/vnd.github+json",
    )
  );