我的要求是我有 1000 万条 csv 记录,并且我想将 csv 导出到 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)
使用 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。
不是直接的方法,但你可以做到。
尝试这个!
这可能符合您的要求。