【问题标题】:Using promised-csv to manipulate very large csv files使用 promise-csv 来操作非常大的 csv 文件
【发布时间】:2016-12-15 17:29:35
【问题描述】:

我正在开发一个节点项目,该项目使用户能够上传 .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('/');
        })
    })
});

【问题讨论】:

    标签: node.js mongodb csv promise q


    【解决方案1】:

    首先您没有提到 CSV 文件的范围是多少?从您的代码中,我看到文件处理是在您上传文件时在同一个请求处理程序中完成的。如果文件大小超过 5MB,我建议使用某种批处理程序来进行文件处理,具体取决于文件大小。添加额外的日志以查看插入需要多长时间的时间,在完成之前是否收到超时。

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

    【讨论】:

    • 我想我应该澄清一下。 CSV 的文件大小不是很大,但它确实包含很多行,大约只有大约 8 列信息。我会说包含 2,000 多行的测试文件是我遇到问题的地方。
    • 无论如何,如果可以按行而不是完整文件块进行处理,那么最好不要阻塞事件循环。
    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多