代码之家  ›  专栏  ›  技术社区  ›  Bat

使用boto3将json批量上传到dynamodb

  •  0
  • Bat  · 技术社区  · 7 年前

    我想批量上传一个json文件到dynamodb。目前,我可以成功地手动将项目放入python文件(如下所示)并上传到一个表中,但是如何修改脚本以读取外部JSON文件(包含200个项目),并将所有200个项目批量上传到表中。

    import boto3
    
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('exampletable')
    
    with table.batch_writer() as batch:
        batch.put_item(
            Item={
                'ID': '2',
                'DateTime': '21/12/2017 13:16',
                'SourceDevice': '10',
                'DestinationDevice': '20',
                'DataType': 'full',
                'Activity': 'unusual'
    
        }
    )
        batch.put_item(
            Item={
                'ID': '3',
                'DateTime': '21/12/2017 13:40',
                'SourceDevice': '10',
                'DestinationDevice': '20',
                'DataType': 'full',
                'Activity': 'unusual'
    
        }
    )
    

    json文件内容如下

    [{
    "ID": "1",
    "DateTime": "21/12/2017 13:16",
    "SourceDevice": "10",
    "DestinationDevice": "20",
    "DataType": "part",
    "Activity": "normal"
    }, {
    "ID": "1",
    "DateTime": "21/12/2017 13:16",
    "SourceDevice": "40",
    "DestinationDevice": "25",
    "DataType": "full",
    "Activity": "unusual"
    }]
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark B    7 年前

    您只需将其分为两个任务:

    1. 从文件读取JSON
    2. 在JSON中循环,调用 batch.put_item 每一次。

    lots of results 当你搜索第一个任务时。第二个任务是 just writing a loop .

    完整的解决方案如下所示:

    import json
    import boto3
    
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('exampletable')
    
    # Read the JSON file
    with open('items.json') as json_data:
        items = json.load(json_data)
    
        with table.batch_writer() as batch:
    
            # Loop through the JSON objects
            for item in items:
                batch.put_item(Item=item)