すべてのプロダクト
Search
ドキュメントセンター

Tablestore:複数のデータ行を同時に更新する

最終更新日:Jul 01, 2025

このトピックでは、Tablestore SDK for Java を使用して、Tablestore 内の複数のデータ行を同時に更新する方法について説明します。 1 回の操作で複数のテーブルにわたってデータの書き込み、変更、削除を実行できます。

使用方法

操作中にパラメータ関連のエラーがサーバーによって検出された場合、パラメータエラー例外が発生し、リクエスト内の操作の実行がすべて阻止されます。

前提条件

クライアントが初期化されていること。 詳細については、「Tablestore クライアントを初期化する」をご参照ください。

メソッドの説明

public BatchWriteRowResponse batchWriteRow(BatchWriteRowRequest batchWriteRowRequest) throws TableStoreException, ClientException

BatchWriteRowRequest パラメータ

パラメータ

説明

rowChangesGroupByTable (必須)

Map<String, List<RowChange>>

行データ操作のリスト。テーブル名とデータ操作タイプが含まれます。 データ操作タイプには、データの書き込み、データの更新、データの削除が含まれます。

サンプルコード

次のサンプルコードは、バッチデータ操作メソッドを使用して 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);

参考資料