Python dynamoDB中更改柱类型的最佳方法

Python dynamoDB中更改柱类型的最佳方法,python,amazon-web-services,amazon-dynamodb,boto3,Python,Amazon Web Services,Amazon Dynamodb,Boto3,我有来自不同服务/来源的DynamoDB表。该表具有下一个架构: { "Id": 14782, "ExtId": 1478240974, //pay attention it is Number "Name": "name1" } 有时,在服务开始工作后,我发现有一个服务以不正确的格式发送数据。它看起来像: { "Id": 14782, "ExtId": "1478240974", //pay attention it is String "Name": "name1"

我有来自不同服务/来源的DynamoDB表。该表具有下一个架构:

{
  "Id": 14782,
  "ExtId": 1478240974, //pay attention it is Number
  "Name": "name1"
}
有时,在服务开始工作后,我发现有一个服务以不正确的格式发送数据。它看起来像:

{
  "Id": 14782,
  "ExtId": "1478240974", //pay attention it is String
  "Name": "name1"
}
DynamoDB是NoSQL数据库,所以,现在我有数百万条难以查询或扫描的混合记录。我知道我的主要缺点是没有通过验证


现在我必须去抛出所有记录,如果它是不合适的类型-删除它并添加相同的数据,但格式正确。可以用另一种优雅的方式吗?

所以这很容易。可以使用
属性类型
方法

首先,我添加了导入:

from boto3.dynamodb.conditions import Attr
import boto3
我的代码是:

    attr = Attr('ExtId').attribute_type('S')
    response = table.scan(FilterExpression = attr)
    items = response['Items']

    while 'LastEvaluatedKey' in response:
        response = table.scan(FilterExpression = attr, ExclusiveStartKey = response['LastEvaluatedKey'])
        items.extend(response['Items'])
可以在下一篇文章中找到更多条件定制-