Roh*_*han 2 batch-processing amazon-dynamodb
如何在单个查询中更新DynamoDB中的多个记录?我有一个csv文件作为基于csv文件的输入我必须在DB中更新多个记录(只有一个属性).有没有可用的API?或者这可以使用批处理(Spring-batch)来完成?
DynamoDB没有batchUpdate直接的API.它有batch get item和batch write itemAPI.
但是,您可以使用batchWriteItemAPI更新项目.
1)使用以下BatchWriteItemSpec类构造请求
2)使用以下TableWriteItems类构造需要更新的项目
3)使用以下addItemToPut方法(或withItemsToPut)添加新属性
batchWriteItem如果项目(即分区键)不可用,API将创建一个新项目.如果分区键可用,它将更新现有项.您的用例属于此类别.
代码示例: -
files - 是表名
fileName - 是分区键
transcriptionnew - 添加新属性(或者也可以更新现有属性值)
DynamoDB dynamoDB = new DynamoDB(dynamoDBClient);
Item itemUpdate1 = new Item();
itemUpdate1.withKeyComponent("fileName", "file1")
.withString("transcriptionnew", "new value");
Item itemUpdate2 = new Item();
itemUpdate2.withKeyComponent("fileName", "file2")
.withString("transcriptionnew", "new value");
TableWriteItems tableWriteItems = new TableWriteItems("files").withItemsToPut(itemUpdate1, itemUpdate2);
BatchWriteItemSpec batchWriteItemSpec = new BatchWriteItemSpec().withTableWriteItems(tableWriteItems);
BatchWriteItemOutcome batchWriteItemOutCome = dynamoDB.batchWriteItem(batchWriteItemSpec);
if (batchWriteItemOutCome.getUnprocessedItems().isEmpty()) {
//All items are processed
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5191 次 |
| 最近记录: |