このトピックでは、Tablestore SDK for Java を使用して、Tablestore 内の複数のデータ行を同時に更新する方法について説明します。 1 回の操作で複数のテーブルにわたってデータの書き込み、変更、削除を実行できます。
使用方法
操作中にパラメータ関連のエラーがサーバーによって検出された場合、パラメータエラー例外が発生し、リクエスト内の操作の実行がすべて阻止されます。
前提条件
クライアントが初期化されていること。 詳細については、「Tablestore クライアントを初期化する」をご参照ください。
メソッドの説明
public BatchWriteRowResponse batchWriteRow(BatchWriteRowRequest batchWriteRowRequest) throws TableStoreException, ClientExceptionサンプルコード
次のサンプルコードは、バッチデータ操作メソッドを使用して test_table テーブルに行データを挿入する方法を示しています。
public static void batchWriteRowExample(SyncClient client) {
// バッチ書き込み行リクエストを構築します。
BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
// RowPutChange を追加します。
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"))
.build();
RowPutChange rowPutChange = new RowPutChange("test_table", primaryKey);
batchWriteRowRequest.addRowChange(rowPutChange);
// batchWriteRow メソッドを呼び出して、バッチデータ操作を実行します。
BatchWriteRowResponse batchWriteRowResponse = client.batchWriteRow(batchWriteRowRequest);
// 結果を返します。
System.out.println("* RequestId: " + batchWriteRowResponse.getRequestId());
System.out.println("* Is All Succeeded: " + batchWriteRowResponse.isAllSucceed());
if(!batchWriteRowResponse.isAllSucceed()) {
System.out.println("* Failed Rows: " + batchWriteRowResponse.getFailedRows().size());
for(BatchWriteRowResponse.RowResult rowResult:batchWriteRowResponse.getFailedRows()) {
System.out.println(batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey() + " | " + rowResult.getError());
}
}
}以下に、さまざまなタイプのデータ操作のサンプルコードを示します。
RowPutChange: 行データを書き込みます。
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder() .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1")) .build(); RowPutChange rowPutChange = new RowPutChange("test_table", primaryKey); batchWriteRowRequest.addRowChange(rowPutChange);行データを書き込むときに属性列を追加します。
// 属性列を追加します。 rowPutChange.addColumn("col1", ColumnValue.fromString("val1")); // カスタムデータバージョン番号を持つ属性列を追加します。 rowPutChange.addColumn("col2", ColumnValue.fromString("val2"), System.currentTimeMillis());RowUpdateChange: 行データを更新します。 属性列の値を変更したり、データ列を追加したり、属性列の特定のバージョンを削除したり、属性列全体を削除したりできます。
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder() .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1")) .build(); RowUpdateChange rowUpdateChange = new RowUpdateChange("test_table", primaryKey); rowUpdateChange.put("col1", ColumnValue.fromString("changed_val1")); batchWriteRowRequest.addRowChange(rowUpdateChange);行データを更新するときに属性列を追加または削除します。
// 属性列を追加します。 rowUpdateChange.put("col3", ColumnValue.fromString("val3")); // カスタムデータバージョン番号を持つ属性列を追加します。 rowUpdateChange.put("col4", ColumnValue.fromString("val4"), System.currentTimeMillis()); // 属性列を削除します。 rowUpdateChange.deleteColumns("col2");RowDeleteChange: 行データを削除します。
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder() .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1")) .build(); RowDeleteChange rowDeleteChange = new RowDeleteChange("test_table", primaryKey); batchWriteRowRequest.addRowChange(rowDeleteChange);