使用boto3将csv导出到dynamodb

时间:2018-08-21 09:41:45

标签: python amazon-dynamodb boto3

我的要求是我有1000万个CSV记录,并且要将CSV导出到DynamoDB?任何人都可以请你帮忙。 而且也可以导出制表符分隔的值吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

将csv转换为json格式,并使用 AWS BatchWriteItem DynamoDB API

确保将主键数据添加到json

import csv
import boto3

def convert_csv_to_json_list(file):
   items = []
   with open(file) as csvfile:
      reader = csv.DictReader(csvfile)
      for row in reader:
          data = {}
          data['temp'] = row['temp']
          #populate remaining fields here
          #................
          items.append(data)
   return items

def batch_write(items):
   dynamodb = boto3.resource('dynamodb')
   db = dynamodb.Table('table-name')

   with db.batch_writer() as batch:
      for item in items:
         batch.put_item(Item=item)

if __name__ == '__main__':
   json_data = convert_csv_to_json_list('file')
   batch_write(json_data)

答案 1 :(得分:0)

使用 AWS BatchWriteItem DynamoDB API 执行批量插入。

循环访问文件内容并批量插入。

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('sample_table')

with table.batch_writer() as batch:
    for i in range(50):
        batch.put_item(
            Item={
                'ORDERNO': 'dummy',
                'DIRECTION': 'dummy',
                'LATITUDE': 'dummy',
                'LONGITUDE': 'dummy'
            }
        )

方法不是很好,但是没有任何编码

AWS Datapipeline具有用于在不同AWS服务之间进行数据迁移的模板,但对于dynamodb,它只能加载dynamodb备份数据,而不能使用CSV。

这不是直截了当的方法,但是您可以做到。

  1. 将csv文件上传到S3
  2. 创建管道以将数据从S3复制到RDS实例(创建一个RDS mysql)。
  3. 使用数据库迁移服务将数据从RDS复制到dynamodb。