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

Tablestore:行の書き込み

最終更新日:Jun 26, 2026

Tablestore SDK for Java を使用して、1 行のデータを書き込みます。条件付き書き込み、カスタムデータバージョン、およびアトミックカウンターを使用して、順序付き書き込み、ステータス更新、およびカウンター操作を実行します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

説明

public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException

1 行を書き込むか、または更新します。行が存在する場合、condition パラメーターが、上書き、追加、または書き込みの拒否を決定します。

次の例では、put_row_demo テーブルに、プライマリキー列 idrow1 に設定し、属性列 col1val1 に設定した行を書き込みます。

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Write CU: " + response.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());

主なパラメーター:

  • tableName (必須):書き込み先のテーブルの名前。

  • primaryKey (必須):プライマリキー。列名と値は、テーブルのプライマリキースキーマと一致する必要があります。

  • columnsToPut (オプション): 属性列のリストです。addColumn を呼び出して列を追加します。

パラメーター

PutRowRequest は、書き込みパラメーターを格納する RowPutChange をラップします:

名前

説明

tableName (必須)

文字列

書き込み先のテーブルの名前。

primaryKey (必須)

PrimaryKey

列名と値を含むプライマリキー。

  • サポートされているデータ型は、文字列、整数、およびバイナリです。

  • プライマリキー列の数と型は、テーブルのプライマリキースキーマと一致する必要があります。

  • 自動採番プライマリキー列の場合、列の値をプレースホルダーに設定します。詳細については、「自動採番プライマリキー列」をご参照ください。

columnsToPut (任意)

List<Column>

属性列のリストです。 addColumn を複数回呼び出して列を 1 つずつ追加するか、1 回の呼び出しで List<Column> を渡します。

  • サポートされているデータ型は、文字列、整数、バイナリ、Double、およびブール値です。

  • データバージョン (タイムスタンプ) は、デフォルトでサーバーによって生成されます。カスタムバージョンを設定するには、addColumn の 3 番目の引数として timestamp を渡します。詳細については、「データバージョン」をご参照ください。

condition (任意)

Condition

書き込み条件。デフォルトでは、既存の行を上書きします。詳細については、「条件付き書き込み」をご参照ください。

returnType (任意)

ReturnType

戻り値の型、setReturnType で設定されます。

  • RT_NONE (デフォルト):データは返されません。

  • RT_PK:プライマリキー列を返します。通常、自動採番列の値を取得するために使用されます。

  • RT_AFTER_MODIFY:変更された列の値を返します。通常、アトミックカウンターと組み合わせて使用されます。

複数の属性列の書き込み

この例では、列ごとに addColumn を呼び出す方法と、準備された List<Column> を 1 回の呼び出しで渡す方法の両方を示します。

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

// オプション1:addColumnで列を1つずつ追加
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));

// オプション2:addColumnsでListを一度に渡す
List<Column> columns = new ArrayList<>();
columns.add(new Column("score", ColumnValue.fromDouble(95.5)));
columns.add(new Column("city", ColumnValue.fromString("Hangzhou")));
rowPutChange.addColumns(columns);

client.putRow(new PutRowRequest(rowPutChange));

データバージョンの指定

addColumn(name, value, timestamp) を使用して、列を書き込むときにカスタムデータバージョンを設定します。

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row3"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

long timestamp = System.currentTimeMillis();
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"), timestamp);

client.putRow(new PutRowRequest(rowPutChange));

自動採番プライマリキーの取得

自動インクリメントプライマリキー列では、列の値にプレースホルダー PrimaryKeyValue.AUTO_INCREMENT を設定します。サーバーは書き込み時に実際の値を生成します。レスポンスで生成された値を取得するには、書き込み前に setReturnType(ReturnType.RT_PK) を呼び出し、書き込みが返された後に response.getRow() を呼び出します。

String tableName = "put_row_auto_inc_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("partition_key", PrimaryKeyValue.fromString("pk1"));
primaryKeyBuilder.addPrimaryKeyColumn("auto_id", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("hello"));
rowPutChange.setReturnType(ReturnType.RT_PK);

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
Row returnedRow = response.getRow();
System.out.println("Returned PK: " + returnedRow.getPrimaryKey());

関連ドキュメント