在大文件加载时将内存不足处理成mongo

我试图保存和parsing大的.csv文件,并保存在MongoDB中的数据,保持结果stringtypes。 所以我试图通过parsing器pipe道.csv文件数据,然后将数据写入MongoDB。

我试着将.csvparsing为一个json文件并使用mongoimport将其上传到MongoDB,但是这些值并没有保存为string,而且在使用mongoimport时不能设置值。

我也不想为节点设置内存,尽量使用尽可能less的内存。

我现在的问题是:程序耗尽内存并抛出:

致命错误:CALL_AND_RETRY_LAST分配失败 – 进程内存不足

 var fs = require('fs'); var parse = require('csv-parse'); var async = require('async'); var queue, stream; var headers = fileData.subText.meta.fields; MongoClient.connect(url, function (err, db) { if (err) throw err; var collection = db.collection(fileData.collectionName); var parser = parse({columns: fileData.subText.meta.fields, delimiter: fileData.delimiter}); stream = fs.createReadStream("filepath" + fileData.name).pipe(parser); var data; queue = async.queue(function (task, next) { data = task.data; collection.insert(data, function (err, result) { if (err) { db.close(); console.log(err); } else { next(); } }); }, 50); stream.on('data', function (data) { stream.pause(); queue.push({ data: data }); }); queue.drain = function () { stream.resume(); }; stream.on('end', function () { return queue.drain = function () { db.close(); return console.log('Process Done'); }; }); }); 

我从这个链接得到的想法: https : //bassnutz.wordpress.com/2012/09/09/processing-large-files-with-nodejs/

任何帮助,将不胜感激。