JDBC Driver for Snowflake

Build 22.0.8509

バッチ処理

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

JDBC Batch API の使用

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

一括挿入

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

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

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

String query = "INSERT INTO [DemoDB].[PUBLIC].Products (ProductName) VALUES(?)"; 
PreparedStatement pstmt = conn.prepareStatement(query,Statement.RETURN_GENERATED_KEYS);

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

pstmt.setString(1, "Konbu"); 
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 [DemoDB].[PUBLIC].Products SET ProductName = ? WHERE Id = ?"; 
PreparedStatement pstmt = conn.prepareStatement(query);

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

pstmt.setString(1,"Konbu");
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 [DemoDB].[PUBLIC].Products 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) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8509