Python 使用boto3将csv导出到dynamodb

Python 使用boto3将csv导出到dynamodb,python,amazon-dynamodb,boto3,Python,Amazon Dynamodb,Boto3,我的要求是我有1000万个csv记录,我想将csv导出到DynamoDB?任何人都可以请你帮忙。 也可以导出制表符分隔的值吗 谢谢, 提前。使用AWS BatchWriteItem DynamoDB API执行批插入 迭代文件内容并批量插入它们 import boto3 dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('sample_table') with table.batch_writer() as batch:

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

谢谢,
提前。

使用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

不是直截了当的方法,但你可以做到

  • 将csv文件上载到S3
  • 创建管道将数据从S3复制到RDS实例(创建一个RDS mysql)
  • 使用数据库迁移服务将数据从RDS复制到dynamodb

  • 将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)
    

    sample.csv:::ORDERNO,DIRECTION,LATITUDE,LONGITUDE 123456789,T,33.22,-101.23我也在使用类似的代码,但其失败并低于错误:botocore.exceptions.ClientError:发生错误(ValidationException)调用BatchWriteItem操作时:提供的键元素与模式代码不匹配:import boto3 import csv dynamodb=boto3.resource('dynamodb','us-west-2')def batch_write(table_name,rows):table=dynamodb.table(table_name)与table.batch_writer()作为批处理:对于行中的行:batch.put_项(Item=row)返回真正的def read\u csv(csv\u file,list):rows=csv.DictReader(open(csv\u file))用于行中的行:list.append(row)if name='main':table\u name='emptest'file\u name='test.csv'items=[]read\u csv(file\u name,items)status=batch\u write(table\u name,items)我正在使用python 3.6