SQL Serverコネクタ¶
SQL Serverコネクタを使用すると、外部SQL Serverデータベースでテーブルのクエリと作成を行うことができます。これは、SQL ServerとHiveのような異なるシステム間、または2つの異なる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設定プロパティ¶
プロパティ名 |
説明 |
デフォルト |
---|---|---|
|
サーバー証明書が自動的に信頼されず、SSL証明書の検証にトラストストアが必要であることを示します。 |
|
|
トラストストアファイルのファイル形式。たとえば、`JKS`または`PEM`です。 |
|
|
サーバーからのSSL証明書で想定されるCN(共通名)を指定します。 |
|
|
トラストストアファイルへのパス。 |
|
|
トラストストアのパスワード。 |
トラストストアを使用する接続文字列は、次の例のようになります。
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の複数のインスタンスに接続する場合、インスタンスごとに1つずつ、複数のカタログを設定する必要があります。
別のカタログを追加するには、`etc/catalog`に別の名前(`.properties`で終わることを確認)のプロパティファイルを追加するだけです。たとえば、プロパティファイルに`sales.properties`という名前を付けると、Prestoは設定されたコネクタを使用して`sales`という名前のカタログを作成します。
一般的な設定プロパティ¶
プロパティ名 |
説明 |
デフォルト |
---|---|---|
|
値がJDBCドライバのユーザー名である`extraCredentials`プロパティの名前。パラメータリファレンスの`extraCredentials`を参照してください。 |
|
|
値がJDBCドライバのユーザーパスワードである`extraCredentials`プロパティの名前。パラメータリファレンスの`extraCredentials`を参照してください。 |
|
|
データセットとテーブル名を大文字と小文字を区別せずに一致させます。 |
|
|
リモートデータセットとテーブル名をキャッシュする期間。キャッシュを無効にするには、`0ms`に設定します。 |
|
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の型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char(n)
varchar(n)