首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用AWS DynamoDB和unix脚本对所有条目的2个字段进行批量更新

使用AWS DynamoDB和unix脚本对所有条目的2个字段进行批量更新
EN

Stack Overflow用户
提问于 2020-11-17 16:12:10
回答 2查看 961关注 0票数 0

我有一个类似于下面的表格:

我使用的是AWS CLI,特别是:

代码语言:javascript
复制
appId="ABC"
aws dynamodb update-item \
            --table-name XTable \
            --key "{\"appId\":{\"S\":\"${appId//[$'\t\r\n ']}\"}}"  \
            --update-expression "SET startDate = :sd, endDate = :ed" \
            --expression-attribute-values '{":sd": {"S": "14/11/2020 23:30:00"}, ":ed": {"S": "15/11/2020 01:17:00"}}' \
            --return-values ALL_NEW 

目前,我可以像这样扫描并迭代条目:

代码语言:javascript
复制
aws dynamodb scan --table-name XTable--query "Items[*].[appId.S]" --output text 

但是,有没有办法对多个键进行更新呢?

EN

回答 2

Stack Overflow用户

发布于 2020-11-17 17:27:09

DynamoDB不提供一个api来在一个请求中更新多个项目的。您必须指定要更新的所有项目的完整密钥。

您可以利用BatchWriteItem,它允许在一个请求中删除Put和多个元素。

请注意,PutItem用于将项写入到表中,这可以完全覆盖具有相同键的现有项。

如果您希望所有的读或写操作一起成功或失败,您还可以利用transactions

BatchWrite或事务类别用于在单个请求中读写多个DynamoDB项。虽然这些操作一次操作多个项目,但它们仍然是基于项目的操作,因为您必须指定要操作的确切项目。

我的建议是扫描表,并为每个结果应用一个更新项。

DynamoDB应用编程接口可能看起来很有限,但它是有意为之的。理解DynamoDB的关键点是,它不会让您编写糟糕的查询。

票数 1
EN

Stack Overflow用户

发布于 2020-11-19 09:16:32

我已经使用scan then loop for each entry实现了它。但是,这意味着如果表中有100个条目,它将执行100次更新调用。我正在寻找一种方法来节省100次调用,如果可能的话,只用所有的键执行一次更新调用,特别是因为要更新的值是相同的日期?

这是我的解决方案,我在问是否有其他方法来节省多个呼叫:

代码语言:javascript
复制
#!/bin/bash 
for appId in $(aws dynamodb scan --table-name XTable --query "Items[*].[applicationId.S]" --output text) ;
do
    echo "start updating $appId"
    aws dynamodb update-item \
        --table-name XTable \
        --key "{\"appId\":{\"S\":\"${appId//[$'\t\r\n ']}\"}}"  \
        --update-expression "SET startDate = :sd, endDate = :ed" \
        --expression-attribute-values '{":sd": {"S": "01/01/2020 03:30:00"}, ":ed": {"S": "15/01/2020 11:00:00"}}' \
        --return-values ALL_NEW     
    echo "completed $appId"         
done    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64871489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档