Пакетная загрузка JSON в DynamodB с помощью Boto3 - PullRequest
0 голосов
/ 12 января 2019

Я хотел бы пакетной загрузкой файла 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 Ответ

0 голосов
/ 12 января 2019

Вы просто разбили бы это на две задачи:

  1. Чтение JSON из файла
  2. Цикл JSON, каждый раз вызывая batch.put_item.

Есть много результатов при поиске первой задачи. И вторая задача буквально просто написать цикл .

Полное решение будет выглядеть примерно так:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...