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 資料庫,或想要連線到 SQL Server 的多個執行個體,您必須設定多個目錄,每個執行個體一個目錄。

若要新增另一個目錄,只需將另一個屬性檔案新增到 etc/catalog,並使用不同的名稱(請確保它以 .properties 結尾)。例如,如果您將屬性檔案命名為 sales.properties,Presto 會使用設定的連接器建立名為 sales 的目錄。

一般組態屬性

屬性名稱

描述

預設值

user-credential-name

其值為 JDBC 驅動程式使用者名稱的 extraCredentials 屬性名稱。請參閱參數參考中的 extraCredentials

password-credential-name

其值為 JDBC 驅動程式使用者密碼的 extraCredentials 屬性名稱。請參閱參數參考中的 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 Database。

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 陳述式