【发布时间】:2021-05-25 23:21:07
【问题描述】:
我正在尝试扫描和更新我的 Amazon DynamoDB 表中具有特定属性值的所有条目,这将是一次性操作,我查询的参数不是索引。
如果我理解正确,我唯一的选择是扫描整个 Amazon DynamoDB 表,每当遇到该条目时,我都应该更新它们。
我的表大小约为 2 GB,我的表有超过 850 万条记录。
下面是我的脚本的 sn-p:
scan_kwargs = {
'FilterExpression': Key('someKey').eq(sometargetNumber)
}
matched_records = my_table.scan(**scan_kwargs)
print 'Number of records impacted by this operations: ' + str(matched_records['Count'])
user_response = raw_input('Would you like to continue?\n')
if user_response == 'y':
for item in matched_records['Items']:
print '\nTarget Record:'
print(item)
updated_record = my_table.update_item(
Key={
'sessionId': item['attr0']
},
UpdateExpression="set att1=:t, att2=:s, att3=:p, att4=:k, att5=:si",
ExpressionAttributeValues={
':t': sourceResponse['Items'][0]['att1'],
':s': sourceResponse['Items'][0]['att2'],
':p': sourceResponse['Items'][0]['att3'],
':k': sourceResponse['Items'][0]['att4'],
':si': sourceResponse['Items'][0]['att5']
},
ReturnValues="UPDATED_NEW"
)
print '\nUpdated Target Record:'
print(updated_record)
else:
print('Operation terminated!')
我在 TEST 环境(
我是否需要以不同的方式执行扫描,我是否遗漏了什么?还是只是 dynamoDB 中“扫描”操作的限制?
【问题讨论】:
-
scan只返回最大1MB的数据,需要通过
LastEvaluatedKey继续调用api获取更多。 -
@BaluVyamajala 是的,我相信这会奏效,谢谢!
标签: amazon-web-services amazon-dynamodb