Amazon dynamodb 如何将5000条记录写入DynamoDB表?

Amazon dynamodb 如何将5000条记录写入DynamoDB表?,amazon-dynamodb,dynamo-local,Amazon Dynamodb,Dynamo Local,我有一个用例,我必须一次性将5000条记录写入dynamoDB表。我正在使用DynamoDBMapper库的batchSaveapi。它一次最多可以写入25条记录。 我是否可以将5000条记录的列表传递给它,然后它会在内部将它们转换为25条记录的批并写入dynamodb表,或者我必须在代码中使用条件逻辑处理这件事,并且只将25条记录传递给batchSave?根据,batchSave(): 保存使用对AmazonDynamoDB.batchWriteItem的一个或多个调用给定的对象 事实上,它将

我有一个用例,我必须一次性将5000条记录写入dynamoDB表。我正在使用DynamoDBMapper库的batchSaveapi。它一次最多可以写入25条记录。 我是否可以将5000条记录的列表传递给它,然后它会在内部将它们转换为25条记录的批并写入dynamodb表,或者我必须在代码中使用条件逻辑处理这件事,并且只将25条记录传递给batchSave?

根据,batchSave():

保存使用对AmazonDynamoDB.batchWriteItem的一个或多个调用给定的对象

事实上,它将您提供给它的项拆分为大小适当的批(25项),并使用DynamoDB
BatchWriteItem
操作写入它们

您可以在中的
batchWrite()
中看到执行此操作的代码:

/**批写入请求中允许的最大项数*/
每批静态最终整数最大项目数=25;
//将25个项目分成若干块,并向DynamoDB发出服务请求
对于(最终StringListMap批次:
requestItems.submap(每批最大项目数,true)){
List failedBatches=writeOneBatch(批处理,config.getBatchWriteRetryStrategy());
...

以下是我为实现这一目标而使用的方法。我设法做到这一点,首先将数据数组放入小数组(长度为25):

constquerychunk=(arr,size)=>{
常数tempArr=[]
for(设i=0,len=arr.length;i{
return wait Promise.all(queryChunk(itemObjs,chunkSize).map(异步块=>{
wait dynamoDB.batchWriteItem({RequestItems:{[tableName]:chunk}).promise()
}))
}

这有帮助吗?我不必处理这个问题,API会帮我做的?是的,应该(库的API,而不是亚马逊基于HTTP的API)。
const queryChunk = (arr, size) => {
    const tempArr = []
    for (let i = 0, len = arr.length; i < len; i += size) {
        tempArr.push(arr.slice(i, i + size));
    }

    return tempArr
}

const batchWriteManyItems = async (tableName, itemObjs, chunkSize = 25) => {
    return await Promise.all(queryChunk(itemObjs, chunkSize).map(async chunk => {
        await dynamoDB.batchWriteItem({RequestItems: {[tableName]: chunk}}).promise()
    }))
}