使用Node.js将数据从MSSQL传输到DynamoDB

我正在尝试使用Node.js将数据从SQL服务器传输到DynamoDb

sql.connect(config, function (err) { if (err) console.log(err); // create Request object var request = new sql.Request(); // query to the database and get the records request.query('SELECT Client, Brand FROM Client WHERE Brand = 6', function (err, recordset) { if (err) console.log(err); console.log('request exectued'); var itemProcessed = 0; // send records as a response recordset.forEach(function (record) { var params = { TableName: 'ClientBrandLookUp', Item: { 'ClientID': record.Client, 'Brand': record.Brand } }; docClient.put(params, function (err, data) { if (err) { console.log(err); } else { console.log('Added'); itemProcessed++; if (itemProcessed === recordset.length) { alldone(); } } }); }); }); }); 

我是Node.js的新手,我想我做错了。 我在我的SQL表中有15万个logging。

该进程正在使用大量的内存,我得到一个Javascript堆内存不足。 我检查了我的发电机表的预测吞吐量,并将其设置为每秒4000次写入。 如果我减less来自SQL的行数这个代码工作正常。

任何帮助或build议将不胜感激。

问题是它试图一次加载所有15万条logging到内存中。 你应该做的是调整你的查询,一次只请求部分数据集(页)。 关于如何在T-SQL中实现分页,有很多答案,但是如果你使用的是新版本, 这个答案应该可以做到。 也就是说,这将取决于您的代码,找出有多less总logging,并跟踪当前页面。