本文介绍如何通过 Java SDK 对表格存储的数据进行批量更新操作,包括写入数据、修改数据和删除数据,支持同时操作多个表的数据。
注意事项
服务端检查到部分操作的参数错误时会抛出参数错误异常,此时该请求中的所有操作都将不执行。
前提条件
方法说明
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);
相关文档
该文章对您有帮助吗?