Python 使用boto3将csv导出到dynamodb
我的要求是我有1000万个csv记录,我想将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:
提前。使用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转换为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