更新 DynamoDB 中的多条记录

2024-05-12

如何在单个查询中更新 DynamoDB 中的多条记录? 我有一个 csv 文件作为基于 csv 文件的输入,我必须更新数据库中的多条记录(只有一个属性)。 有可用的 API 吗? 或者这可以使用批处理(Spring-batch)来完成?


DynamoDB 没有batchUpdate直接API。它确实有batch get item and batch write item API.

但是,您可以使用batchWriteItem用于更新项目的 API。

1)使用下面的BatchWriteItemSpec构造请求的类

批量写入项目规范 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/spec/BatchWriteItemSpec.html

2)使用下面的TableWriteItems类来构造需要更新的项目

表写入项 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/TableWriteItems.html

3)使用下面的addItemToPut方法(或withItemsToPut) 添加新属性

添加要放置的项目 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/TableWriteItems.html#addItemToPut-com.amazonaws.services.dynamodbv2.document.Item-

The batchWriteItem如果该项目(即分区键)不可用,API 将创建一个新项目。如果分区键可用,它将更新现有项目。您的用例属于此类别。

代码示例:-

files- 是表名

fileName- 是分区键

转录新- 添加新属性(或者也可以更新现有属性值)

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;
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 DynamoDB 中的多条记录 的相关文章

  • 将数据从 Dynamodb 发送到 Amazon Elasticsearch 的最佳方式

    我想知道将数据从 dynamoDB 发送到 elasticsearch 的最佳方式是什么 AWS SDK js https github com Stockflare lambda dynamo to elasticsearch blob
  • Dynamodb - 更新对象数组中 JSON 对象的值

    以下是存储在 DynamoDb 中的示例项目对象 记录 我使用 NodeJS 和AWS DynamoDB DocumentClient访问数据库 我正在构建一个 PUT 函数来更新数组中 JSON 对象的状态 该函数将有权访问该项目的uui
  • 返回 dynamodb 中具有最大排序键的项目

    我正在使用 python 脚本访问 AWS 中的 dynamodb 数据库 我有一个带有哈希键和排序键的表 对于给定的哈希键 我想找到具有小于某个值的最大排序键的项目 我怎样才能做到这一点 或者 有没有办法从给定的键查找前一项 I am n
  • Django 中是否有适用于 Amazon DynamoDB 的良好数据库后端? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的下一个 Django 项目中使用 DynamoDB 我已经找到了将会话数据存储到 Dynam
  • 具有专用启动键的 DynamoDB 全球二级索引

    通过全局二级索引查询 DynamoDB 表时是否可以指定独占开始键 我正在使用 aws java sdk 版本 1 6 10 并使用QueryExpression and a DynamoDBMapper 这是我想做的事情的要点 Mappe
  • 是否可以附加到 DynamoDB 中的多值属性?

    是否可以附加到 Amazon DynamoDB 表中多值属性的值列表 我不太能够使用 put 请求弄清楚它 如果可能的话 我想避免读取 更新 写入逻辑 假设您指的是字符串和数字集如中所述Amazon DynamoDB 数据类型 https
  • 在全局二级索引上使用“withExclusiveStartKey”进行分页

    我有一个名为 product 的 DynamoDB 表 其全局二级索引位于 userId 上 主键位于 id 上 我正在尝试使用 userID GSI 上的 withExclusiveStartKey 来实现分页查询 但是 当我传递有效的
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • 从 AWS lambda 函数更新 Amplify 数据存储

    在我的应用程序中 有一个功能 当我们在 s3 中上传文件时 会调用相关的 AWS Lambda 触发器 当 Lambda 函数触发时 我想将文件相关数据存储在 AWS Amplify 数据存储中 是否可以在 Lambda 函数中访问 AWS
  • 更新项目时,NUMBER_VALUE 无法转换为字符串

    我在 DynamoDB 上遇到了这个奇怪的问题 我似乎无法更新项目 这是我的命令 TableName UserTable Key UID S h4XJj3YRxZiF7TDcGkxAhc UpdateExpression SET numRa
  • AWS SDK 2 承担角色

    Bean public DynamoDbClient amazonDynamoDB final AssumeRoleRequest assumeRoleRequest AssumeRoleRequest builder roleSessio
  • AWS 基于字段值 Amplify GraphQL 授权

    我有一个 AWS Amplify 项目 该项目在 Cognito 中具有三个不同的用户组 管理员 教师和学生组 我还有一个如下所示的 GraphQL 架构 type DriveTime model id ID start AWSDateTi
  • 在 AWS Quicksight 中可视化 DynamoDB 数据

    我正在寻找一个以 AWS 为中心的解决方案 如果可能的话 避免使用第三方的东西 来可视化非常简单的 DynamoDB 表中的数据 我们使用 AWS Quicksight 为客户提供许多其他报告和仪表板 以便在那里提供可视化效果 我非常惊讶地
  • 是否可以使用 AWS AppSync 构建离线优先的移动应用程序?

    我想使用 AWS AppSync 进行移动开发 Android iOS 但我不确定其离线功能 根据文档 数据将在离线时访问 并在客户端再次上线时自动同步 但我找不到任何有关应用程序客户端在使用 AppSync 创建和修改离线数据之前是否需要
  • 图形批量API

    这是我在 stackoverflow 上的第一篇文章 我正在使用 Facebook Graph Batch API 一次请求多个用户的 Feed 更新 但我真的不知道如何进行适当的错误处理 下面的例子应该说明我的问题 批量请求 user1
  • boto 库是线程安全的吗?

    具体来说 我对从多个线程 放置 获取 更新等 使用 DynamoDB 表对象感兴趣 如果这不安全 那么是否有一种安全的方法 即每个线程可能有一个表对象 关于在 boto 中使用线程的任何其他陷阱或技巧表示赞赏 boto 库使用 httpli
  • 如何修复 Dynamo-db 中针对 null/空字符串的禁用验证?

    我正在尝试将数据从节点 JS 代码推送到 Dynamodb 我遇到这样的问题 DynamoDB DocumentClient 应支持空字符串属性 有谁知道如何在 DynamoDB 中禁用验证 通过添加此内容 我们将能够将空值插入 Dynam
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些

随机推荐