

# JDBC 3.x ドライバーの使用を開始する
<a name="jdbc-v3-driver-getting-started"></a>

このセクションの情報を使用して Amazon Athena JDBC 3.x ドライバーを開始します。

**Topics**
+ [インストール手順](#jdbc-v3-driver-installation-instructions)
+ [ドライバーの実行](#jdbc-v3-driver-running-the-driver)
+ [ドライバーの設定](#jdbc-v3-driver-configuring-the-driver)
+ [Athena JDBC v2 ドライバーからのアップグレード](#jdbc-v3-driver-upgrading-from-the-athena-jdbc-v2-driver-to-v3)

## インストール手順
<a name="jdbc-v3-driver-installation-instructions"></a>

JDBC 3.x ドライバーは、カスタムアプリケーションまたはサードパーティの SQL クライアントで使用できます。

### カスタムアプリケーションの場合
<a name="jdbc-v3-driver-installation-in-a-custom-application"></a>

ドライバー jar とその依存関係を含む `.zip` ファイルをダウンロードします。依存関係にはそれぞれ独自の `.jar` ファイルがあります。ドライバー jar を依存関係としてカスタムアプリケーションに追加します。別のソースからアプリケーションにその依存関係を既に追加しているかどうかに基づいて、ドライバー jar の依存関係を選択的に追加します。

### サードパーティ製 SQL クライアントの場合
<a name="jdbc-v3-driver-installation-in-a-third-party-sql-client"></a>

ドライバーの uber jar ファイルをダウンロードし、サードパーティ SQL クライアントの指示に従ってそのクライアントに追加します。

## ドライバーの実行
<a name="jdbc-v3-driver-running-the-driver"></a>

ドライバーを実行するには、カスタムアプリケーションまたはサードパーティの SQL クライアントを使用できます。

### カスタムアプリケーションの場合
<a name="jdbc-v3-driver-running-in-a-custom-application"></a>

JDBC インターフェイスを使用してプログラムから JDBC ドライバーを操作します。次のコードは、カスタム Java アプリケーションの例を示しています。

```
public static void main(String args[]) throws SQLException {
    Properties connectionParameters = new Properties();
    connectionParameters.setProperty("Workgroup", "primary");
    connectionParameters.setProperty("Region", "us-east-2");
    connectionParameters.setProperty("Catalog", "AwsDataCatalog");
    connectionParameters.setProperty("Database","sampledatabase");
    connectionParameters.setProperty("OutputLocation","s3://amzn-s3-demo-bucket");
    connectionParameters.setProperty("CredentialsProvider","DefaultChain");
    String url = "jdbc:athena://";
    AthenaDriver driver = new AthenaDriver();
    Connection connection = driver.connect(url, connectionParameters);
    Statement statement = connection.createStatement();
    String query = "SELECT * from sample_table LIMIT 10";
    ResultSet resultSet = statement.executeQuery(query);
    printResults(resultSet); // A custom-defined method for iterating over a
                             // result set and printing its contents
}
```

### サードパーティ製 SQL クライアントの場合
<a name="jdbc-v3-driver-running-in-a-third-party-sql-client"></a>

使用している SQL クライアントのマニュアルに従ってください。通常は、SQL クライアントのグラフィカルユーザーインターフェイスを使用してクエリを入力および送信します。クエリ結果は同じインターフェイスに表示されます。

## ドライバーの設定
<a name="jdbc-v3-driver-configuring-the-driver"></a>

接続パラメータを使用して Amazon Athena JDBC ドライバーを設定できます。サポートされている接続パラメータについては、「[Amazon Athena JDBC 3.x 接続パラメータ](jdbc-v3-driver-connection-parameters.md)」を参照してください。

### カスタムアプリケーションの場合
<a name="jdbc-v3-driver-configuring-in-a-custom-application"></a>

カスタムアプリケーションの JDBC ドライバーの接続パラメータを設定するには、次のいずれかの操作を行います。
+ パラメータ名およびその値を `Properties` オブジェクトに追加します。`Connection#connect` を呼び出すとき、そのオブジェクトを URL と一緒に渡します。例については、[ドライバーの実行](#jdbc-v3-driver-running-the-driver) のサンプルの Java アプリケーションを参照してください。
+ 接続文字列 (URL) では、次の形式を使用してパラメータ名およびその値をプロトコルプレフィックスの直後に追加します。

  ```
  {{<parameterName>}}={{<parameterValue>}};
  ```

  次の例のように、各パラメーター名/パラメータ値のペアの末尾にはセミコロンを使用します。セミコロンの後には、空白を入れないでください。

  ```
  String url = "jdbc:athena://WorkGroup=primary;Region=us-east-1;...;";AthenaDriver driver = new AthenaDriver();Connection connection = driver.connect(url, null);
  ```
**注記**  
パラメータを接続文字列および `Properties` オブジェクトの両方で指定する場合、接続文字列の値が優先されます。両方に同じパラメータを指定することはお勧めしません。
+ 次の例のように、パラメータ値を引数として `AthenaDataSource` のメソッドに追加します。

  ```
  AthenaDataSource dataSource = new AthenaDataSource();
      dataSource.setWorkGroup("primary");
      dataSource.setRegion("us-east-2");
      ...
      Connection connection = dataSource.getConnection();
      ...
  ```

### サードパーティ製 SQL クライアントの場合
<a name="jdbc-v3-driver-configuring-in-a-third-party-sql-client"></a>

使用している SQL クライアントの指示に従ってください。通常、クライアントはパラメータ名とその値を入力するグラフィカルユーザーインターフェイスを用意します。

## Athena JDBC v2 ドライバーからのアップグレード
<a name="jdbc-v3-driver-upgrading-from-the-athena-jdbc-v2-driver-to-v3"></a>

JDBC バージョン 3 の接続パラメータのほとんどは、バージョン 2 (Simba) JDBC ドライバーとの下位互換性があります。つまり、バージョン 2 の接続文字列はバージョン 3 のドライバーで再利用できることを意味します。ただし、一部の接続パラメータは変更されています。これらの変更は本書で説明されています。バージョン 3 の JDBC ドライバーにアップグレードするときは、必要に応じて既存の設定を更新してください。

### ドライバークラス
<a name="jdbc-v3-driver-upgrading-driver-class"></a>

一部の BI ツールでは、JDBC ドライバー `.jar` ファイルからドライバークラスを指定するように求められます。ほとんどのツールはこのクラスを自動的に見つけます。バージョン 3 ドライバーのクラスの完全修飾名は `com.amazon.athena.jdbc.AthenaDriver` です。バージョン 2 ドライバーでは、クラスは `com.simba.athena.jdbc.Driver` でした。

### 接続文字列
<a name="jdbc-v3-driver-upgrading-connection-string"></a>

バージョン 3 ドライバーは、JDBC 接続文字列 URL の先頭にあるプロトコルに `jdbc:athena://` を使用します。バージョン 3 ドライバーはバージョン 2 プロトコル `jdbc:awsathena://` もサポートしていますが、バージョン 2 プロトコルの使用は非推奨になっています。定義されていない動作を避けるため、バージョン 3 は、バージョン 2 (または `jdbc:awsathena://` で始まる接続文字列を受け入れるその他のドライバー) が [DriverManager](https://docs.oracle.com/javase/8/docs/api/java/sql/DriverManager.html) クラスで登録されている場合、`jdbc:awsathena://` で始まる接続文字列を受け入れません。

### 認証情報プロバイダー
<a name="jdbc-v3-driver-upgrading-credentials-providers"></a>

バージョン 2 ドライバーは、完全修飾名を使用してさまざまな認証情報プロバイダー (例: `com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain`) を特定します。バージョン 3 ドライバーは短い名前 (例: `DefaultChain`) を使用します。新しい名前は、各認証情報プロバイダーの対応するセクションで説明されています。

以前の AWS SDK for Java から [AWSCredentialsProvider](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html) インターフェイスを実装するのではなく、新しい AWS SDK for Java から [AwsCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/AwsCredentialsProvider.html) インターフェイスを実装するには、バージョン 2 ドライバー用に作成されたカスタム認証情報プロバイダーをバージョン 3 ドライバー用に変更する必要があります。

`PropertiesFileCredentialsProvider` は、JDBC 3.x ドライバーではサポートされていません。このプロバイダーは JDBC 2.x ドライバーで使用されていましたが、サポート終了間近の AWS SDK for Java の以前のバージョンに属しています。JDBC 3.x ドライバーで同じ機能を実現するには、代わりに [AWS 設定プロファイルの認証情報](jdbc-v3-driver-aws-configuration-profile-credentials.md) プロバイダーを使用してください。

### ログレベル
<a name="jdbc-v3-driver-upgrading-log-level"></a>

次のテーブルには、JDBC バージョン 2 とバージョン 3 のドライバーにある `LogLevel` パラメータの違いが示されています。


****  

| JDBC ドライバーバージョン | パラメータ名 | パラメータタイプ | デフォルトの値 | 使用できる値 | 接続文字列の例 | 
| --- | --- | --- | --- | --- | --- | 
|  v2 | LogLevel | オプションです。 | 0 | 0～6 | LogLevel=6; | 
| v3 | LogLevel | オプションです。 | TRACE | OFF、ERROR、WARN、INFO、DEBUG、TRACE | LogLevel=INFO; | 

### クエリ ID の取得
<a name="jdbc-v3-driver-upgrading-query-id-retrieval"></a>

バージョン 2 ドライバーでは、`Statement` インスタンスを `com.interfaces.core.IStatementQueryInfoProvider` にアンラップします。これは `#getPReparedQueryId` および `#getQueryId` の 2 つのメソッドを持つインターフェイスです。これらのメソッドを使用し、実行されたクエリのクエリ実行 ID を取得できます。

バージョン 3 ドライバーでは、`Statement`、`PreparedStatement`、`ResultSet` インスタンスを `com.amazon.athena.jdbc.AthenaResultSet` インターフェイスにアンラップします。このインターフェイスには `#getQueryExecutionId` という 1 つのメソッドがあります。