适用于: 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 SQLDatabricks Runtime 16.2 及更高版本
MYSQL
POSTGRESQL
REDSHIFT
SNOWFLAKE
-
SQLDW
(Synapse) SQLSERVER
OPTIONS
设置建立连接所需的
connection_type
特定参数。选项
属性键。 该键可以包含一个或多个 由 点或
STRING
文本分隔的标识符。属性键必须唯一,且区分大小写。
价值
属性的值。 值必须是
BOOLEAN
、STRING
、INTEGER
或DECIMAL
常数表达式。 该值也可以是对SECRET
SQL 函数的调用。 例如,value
的password
可以包含secret('secrets.r.us', 'postgresPassword')
而不是输入文本密码。
适用于: 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",
)
);