JDBC Driver for Apache Phoenix

Build 24.0.9062

バッチ処理

CData JDBC Driver for Apache Phoenix では、JDBC batch API を通じて、Apache Phoenix の一括ロードサポートを活用することができます。batch API を使用して、関連するSQL データ操作ステートメントを同時に実行できます。

JDBC Batch API の使用

次の例は、PreparedStatement を使用して一括操作を実行する方法を示しています。

一括挿入

PreparedStatement を使用して一括挿入を実行するには、一括挿入の一部として実行するパラメータのセットごとにaddBatch を呼び出します。すべてのパラメータのセットをバッチに追加したら、executeBatch を呼び出して一括挿入を実行できます。

executeBatch メソッドは、各ステートメントの更新数を含む配列を返します。次に例を示します。

新しいレコードの主キーを取得するには、prepareStatement を呼び出すときにStatement.RETURN_GENERATED_KEYS フラグを設定し、executeBatch を呼び出した後にgetGeneratedKeys メソッドを呼び出します。

String query = "INSERT INTO [SampleCatalog_1].[SampleSchema_1].SampleTable_1 (Name) VALUES (?)"; 
PreparedStatement pstmt = conn.prepareStatement(query,Statement.RETURN_GENERATED_KEYS);

pstmt.setString(1, "Jon Doe"); 
pstmt.addBatch();

pstmt.setString(1, "John"); 
pstmt.addBatch();

int[] r = pstmt.executeBatch();
for(int i: r)
  System.out.println(i);

ResultSet rs = pstmt.getGeneratedKeys();
while(rs.next()){    
  System.out.println(rs.getString("Id"));
}

一括更新

PreparedStatement を使用して一括更新を実行するには、一括更新の一部として実行するパラメータのセットごとにaddBatch を呼び出します。すべてのパラメータのセットをバッチに追加したら、executeBatch を呼び出します。

executeBatch メソッドは、配列内の各ステートメントの更新数を返します。次に例を示します。

String query = "UPDATE [SampleCatalog_1].[SampleSchema_1].SampleTable_1 SET Name = ? WHERE Id = ?"; 
PreparedStatement pstmt = conn.prepareStatement(query);

pstmt.setString(1,"Jon Doe");
pstmt.setString(2,"MyId"); 
pstmt.addBatch();		

pstmt.setString(1,"John");
pstmt.setString(2,"MyId2"); 
pstmt.addBatch();		

int[] r = pstmt.executeBatch();
for(int i: r)
  System.out.println(i);

一括削除

PreparedStatement を使用して一括削除を実行するには、一括削除の一部として実行するパラメータのセットごとにaddBatch を呼び出します。すべてのパラメータのセットをバッチに追加したら、executeBatch を呼び出します。

executeBatch メソッドは、配列内の各ステートメントの更新数を返します。次に例を示します。

String query = "DELETE FROM [SampleCatalog_1].[SampleSchema_1].SampleTable_1 WHERE Id = ?";
PreparedStatement pstmt = conn.prepareStatement(query);

pstmt.setString(1,"MyId1"); 
pstmt.addBatch();		

pstmt.setString(1,"MyId2");
pstmt.addBatch();		

int[] r = pstmt.executeBatch();
for(int i: r)
  System.out.println(i);

バッチサイズの設定

サーバーに送信されるリクエストのサイズに制限がある場合は、バッチサイズの最大値を設定する必要があります。BatchSize プロパティを設定して、バッチ全体を指定された値のバッチに分割します。各バッチは、個別にサーバーに送信されます。

または、BatchSize を0 に設定して、バッチ全体を送信します。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062