简体   繁体   中英

How to write multiple items in dynamo db using s3?

So I'm trying to insert multiple items in a dynamodb table. I'm reading my data from a csv file and everything's going write(My logs in aws cloudwatch shows me that I'm correctly extracting my data from the csv file). I've first try in a loop to write each element in the table like this:

for item in Items:
  response = dynamodb.put_item(
        TableName = 'some_table_name',
        Item = item)

For this syntax I'm using the dynamodb client like this: dynamodb = boto3.client('dynamodb', region_name=region)
After this attempt, I've tried to used to batch write in a loop like this:

for item in Items:
  response = dynamodb.batch_write_item(
    RequestItems={
        'some_table': [
                 {
                        'PutRequest': {
                            'Item':item
                         }
                 }
          ]
     }
   )
   print('Successfully uploaded to DynamoDB')

And I'm still using the dynamodb client. After those two attempts, I've tried the same functions with the dynamodb resource ( dynamodb = boto3.client('dynamodb', region_name=region) ). The problem is that my list Items has 42 items, and all those tentatives put different number of items (25,27,29) but never 42. So where am I doing wrong? Can u guys help me please?

Try implementing retry mechanism for your bachwrite

result, batchError := svc.DynamoDBBatchWrite(input)

if result != nil && len(result.UnprocessedItems) > 0 {
                input = &dynamodb.BatchWriteItemInput{
                    RequestItems: result.UnprocessedItems,
                }
            }

and then retry till the result.UnprocessedItems == 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM