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

Tablestore:行のバッチオペレーション

最終更新日:Jun 26, 2026

BatchWriteRow は、1 つ以上のテーブルにまたがる行の書き込み、更新、削除の各操作を単一のリクエストにまとめ、行ごとの結果を返します。

前提条件

Tablestore SDK for Java がインストールされており、クライアントが初期化されていること。

説明

public BatchWriteRowResponse batchWriteRow(BatchWriteRowRequest batchWriteRowRequest) throws TableStoreException, ClientException

batchWriteRow メソッドは、1 つ以上のテーブルにまたがる複数の行操作を単一のリクエストで実行します。Tablestore は各行を独立して処理するため、単一の行でエラーが発生しても他の行には影響しません。

説明

リクエスト内のいずれかの操作にパラメーターエラーが含まれている場合、Tablestore はリクエスト全体に対してパラメーターエラーを返し、すべての操作が実行されません。

次の例では、テーブル batch_write_demo に 1 行 (プライマリキー row1) を書き込み、isAllSucceed で全体の結果を確認し、getFailedRows で失敗した行の詳細を取得します。

String tableName = "batch_write_demo";

BatchWriteRowRequest request = new BatchWriteRowRequest();

PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"))
        .build();
RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));
request.addRowChange(rowPutChange);

BatchWriteRowResponse response = client.batchWriteRow(request);
System.out.println("RequestId: " + response.getRequestId());
System.out.println("All Succeeded: " + response.isAllSucceed());
if (!response.isAllSucceed()) {
    for (BatchWriteRowResponse.RowResult fail : response.getFailedRows()) {
        System.out.println("Failed: table=" + fail.getTableName()
                + " index=" + fail.getIndex()
                + " error=" + fail.getError());
    }
}

パラメーター

名前

説明

BatchWriteRowRequest (必須)

class

バッチリクエストのコンテナです。 addRowChange(RowChange) を使用して行操作を追加します。単一のリクエストで、複数のテーブルにまたがる異なる RowChange タイプを組み合わせることができます。

RowPutChange (1 つ以上)

class

行全体を書き込み (上書き) します。テーブル名とプライマリキーを指定します。 addColumn を使用して属性列を追加します。動作は単一行書き込みインターフェースと同じです。詳細については、「行の書き込み」をご参照ください。

RowUpdateChange (1 つ以上)

class

属性列を変更します。 put を使用して属性列を追加または更新し、deleteColumns を使用して属性列全体を削除し、deleteColumn を使用して特定のバージョンを削除します。詳細については、「行の更新」をご参照ください。

RowDeleteChange (1 つ以上)

class

行全体を削除します。テーブル名とプライマリキーを指定します。詳細については、「行の削除」をご参照ください。

行のバッチ更新

バッチリクエストで RowUpdateChange を使用して属性列を更新します。

String tableName = "batch_write_demo";

BatchWriteRowRequest request = new BatchWriteRowRequest();

PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row_for_update"))
        .build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);

// 属性列を更新または追加します
rowUpdateChange.put("col1", ColumnValue.fromString("new_val1"));
rowUpdateChange.put("col2", ColumnValue.fromLong(100));

// 属性列全体を削除します
rowUpdateChange.deleteColumns("obsolete_col");

request.addRowChange(rowUpdateChange);
client.batchWriteRow(request);

行のバッチ削除

バッチリクエストで RowDeleteChange を使用して行全体を削除します。

String tableName = "batch_write_demo";

BatchWriteRowRequest request = new BatchWriteRowRequest();

PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row_for_delete"))
        .build();
RowDeleteChange rowDeleteChange = new RowDeleteChange(tableName, primaryKey);

request.addRowChange(rowDeleteChange);
client.batchWriteRow(request);

複数のテーブルにまたがる操作の組み合わせ

単一のリクエストで、複数のテーブルにまたがる書き込み、更新、削除の各操作を組み合わせます。 Tablestore は行ごとに結果を返します。

String tableA = "batch_write_demo";
String tableB = "batch_write_demo_2";

BatchWriteRowRequest request = new BatchWriteRowRequest();

// テーブル A に新しい行を挿入します
PrimaryKey pkA = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("rowA_new"))
        .build();
RowPutChange putA = new RowPutChange(tableA, pkA);
putA.addColumn("col1", ColumnValue.fromString("valA"));
request.addRowChange(putA);

// テーブル B の既存の行を更新します
PrimaryKey pkB = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("rowB_existing"))
        .build();
RowUpdateChange updateB = new RowUpdateChange(tableB, pkB);
updateB.put("status", ColumnValue.fromString("done"));
request.addRowChange(updateB);

// テーブル A から行を削除します
PrimaryKey pkADel = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("rowA_obsolete"))
        .build();
RowDeleteChange deleteA = new RowDeleteChange(tableA, pkADel);
request.addRowChange(deleteA);

BatchWriteRowResponse response = client.batchWriteRow(request);

if (!response.isAllSucceed()) {
    System.out.println("Failed rows: " + response.getFailedRows().size());
    for (BatchWriteRowResponse.RowResult fail : response.getFailedRows()) {
        System.out.println(" - table=" + fail.getTableName()
                + " index=" + fail.getIndex()
                + " error=" + fail.getError());
    }
}