Amazon dynamodb 在DynamoDB中更新多个记录
如何在一次查询中更新DynamoDB中的多个记录? 我有一个csv文件作为基于csv文件的输入,我必须更新数据库中的多个记录(只有一个属性)。 是否有任何API可用于此?Amazon dynamodb 在DynamoDB中更新多个记录,amazon-dynamodb,batch-processing,Amazon Dynamodb,Batch Processing,如何在一次查询中更新DynamoDB中的多个记录? 我有一个csv文件作为基于csv文件的输入,我必须更新数据库中的多个记录(只有一个属性)。 是否有任何API可用于此? 或者这可以通过批处理(Spring batch)来实现?DynamoDB没有直接的batchUpdateAPI。它确实有batch get item和batch write itemAPI 但是,您可以使用batchWriteItemAPI来更新该项 1) 使用下面的BatchWriteItemSpec类构造请求 2) 使用
或者这可以通过批处理(Spring batch)来实现?DynamoDB没有直接的
batchUpdate
API。它确实有batch get item
和batch write item
API
但是,您可以使用batchWriteItem
API来更新该项
1) 使用下面的BatchWriteItemSpec
类构造请求
2) 使用下面的TableWriteItems
类构造需要更新的项
3) 使用下面的addItemToPut
方法(或withItemsToPut
)添加新属性
如果项(即分区键)不可用,则batchWriteItem
API将创建一个新项。如果分区键可用,它将更新现有项。您的用例属于这个类别
代码示例:-
文件-是表名
文件名-是分区键
TransactionNew-添加新属性(也可以更新现有属性值)
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;
}