使用 boto3 将 csv 导出到 dynamodb

问题描述 投票:0回答:3

我的要求是我有 1000 万条 csv 记录,并且我想将 csv 导出到 DynamoDB?任何人都可以帮忙解决这个问题。 这也可以导出制表符分隔值吗?

谢谢, 提前。

python amazon-dynamodb boto3
3个回答
5
投票

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

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。

0
投票

尝试这个
这可能符合您的要求。

© www.soinside.com 2019 - 2024. All rights reserved.