SQL Server 连接器

SQL Server 连接器允许查询和创建外部 SQL Server 数据库中的表。这可以用来连接不同系统(如 SQL Server 和 Hive)或两个不同的 SQL Server 实例之间的数据。

配置

要配置 SQL Server 连接器,请在 etc/catalog 中创建一个目录属性文件,例如名为 sqlserver.properties,将 SQL Server 连接器安装为 sqlserver 目录。使用以下内容创建文件,根据您的设置替换连接属性

connector.name=sqlserver
connection-url=jdbc:sqlserver://[serverName[\instanceName][:portNumber]]
connection-user=root
connection-password=secret

连接安全

JDBC 驱动程序和连接器会自动使用传输层安全 (TLS) 加密和证书验证。这需要在您的 SQL Server 数据库主机上配置适当的 TLS 证书。

要在连接字符串中禁用加密,请使用 encrypt 属性

connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=false;

其他可以使用 connection-url 配置的 SSL 配置属性

SSL 配置属性

属性名称

描述

默认值

trustServerCertificate

表示服务器证书不会自动信任,SSL 证书验证需要密钥库。

false

trustStoreType

密钥库文件的格式,例如 JKSPEM

hostNameInCertificate

指定服务器 SSL 证书中预期的 CN(公用名)。

trustStore

密钥库文件的路径。

trustStorePassword

密钥库的密码。

使用密钥库的连接字符串类似于以下示例

connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=true;trustServerCertificate=false;trustStoreType=PEM;hostNameInCertificate=hostname;trustStore=path/to/truststore.pem;trustStorePassword=password

多个 SQL Server 数据库或服务器

SQL Server 连接器只能访问配置的数据库中的单个数据库。因此,如果您有多个 SQL Server 数据库,或者想要连接到 SQL Server 的多个实例,则必须为每个实例配置多个目录。

要添加另一个目录,只需将另一个属性文件添加到 etc/catalog 中,并使用不同的名称(确保它以 .properties 结尾)。例如,如果您将属性文件命名为 sales.properties,Presto 将使用配置的连接器创建一个名为 sales 的目录。

通用配置属性

属性名称

描述

默认值

user-credential-name

extraCredentials 属性的名称,其值为 JDBC 驱动程序的用户名。请参阅 参数参考 中的 extraCredentials

password-credential-name

extraCredentials 属性的名称,其值为 JDBC 驱动程序的密码。请参阅 参数参考 中的 extraCredentials

case-insensitive-name-matching

不区分大小写匹配数据集和表名。

false

case-insensitive-name-matching.cache-ttl

远程数据集和表名将缓存的持续时间。设置为 0ms 以禁用缓存。

1m

查询 SQL Server

SQL Server 连接器提供对配置数据库中对指定用户可见的所有架构的访问权限。对于以下示例,假设 SQL Server 目录为 sqlserver

您可以通过运行 SHOW SCHEMAS 来查看可用的架构。

SHOW SCHEMAS FROM sqlserver;

如果您有一个名为 web 的架构,您可以通过运行 SHOW TABLES 来查看此架构中的表。

SHOW TABLES FROM sqlserver.web;

您可以使用以下两种方法之一,查看 web 数据库中 clicks 表的列列表:

DESCRIBE sqlserver.web.clicks;
SHOW COLUMNS FROM sqlserver.web.clicks;

最后,您可以查询 web 架构中的 clicks

SELECT * FROM sqlserver.web.clicks;

如果您为目录属性文件使用了不同的名称,请在以上示例中使用该目录名称代替 sqlserver

SQL Server 连接器限制

Presto 支持连接到 SQL Server 2016、SQL Server 2014、SQL Server 2012 和 Azure SQL 数据库。

Presto 支持以下 SQL Server 数据类型。下表显示了 SQL Server 和 Presto 数据类型之间的映射。

SQL Server 类型

Presto 类型

bigint

bigint

smallint

smallint

int

integer

float

double

char(n)

char(n)

varchar(n)

varchar(n)

date

date

SQL Server 数据类型 的完整列表。

以下 SQL 语句尚不支持