我的要求是我有1000万个CSV记录,并且要将CSV导出到DynamoDB?任何人都可以请你帮忙。 而且也可以导出制表符分隔的值吗?
谢谢,
答案 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。
这不是直截了当的方法,但是您可以做到。