使用promised-csv来操作非常大的csv文件

时间:2016-08-09 15:18:17

标签: node.js mongodb csv promise q

我正在开发一个节点项目,该项目允许用户上传.csv文件,然后这些文件可能会添加到mongo数据库中。我使用不同的模块工作,但是对于大文件,它将在处理完所有数据之前完成读取和重定向用户。我认为promised-csv会对此有所帮助,但我无法弄清楚如何设置它。这是当前的设置:

app.post('/import', isLoggedIn, function(req, res) {
    var reader = csv.createCsvFileReader(req.files.spreadsheet.path, {columnsFromHeader:true, 'separator': ','});
    reader.addListener('data', function(data) {
        //do stuff with data here.
    })
    reader.addListener('end', function(){
        fs.unlink(req.files.spreadsheet.path, function(err) {
            res.redirect('/');
        })
    })
});

1 个答案:

答案 0 :(得分:0)

首先你没有提到CSV文件的范围是什么?从您的代码中我看到文件处理是在您上传文件的同一个请求处理程序中完成的。根据文件大小超过5MB,我建议使用某种批处理工作程序来进行文件处理。添加额外的日志记录以查看插入需要多长时间的时间,它是否在完成之前接收超时。

查看基于NodeJs reading csv file的好节点CSV库流的帖子。