2017-08-11 163 views
0

所以我有一个70mb的.csv文件,我想解析并转换成一个json,试图在500kb的测试csv做json转换,我发现一个简单的解决方案与正则表达式。
问题是,当我把我的实际数据,我不能再使用fs.readFileSync,所以我需要使用流。
我的问题是:我如何使用流和正则表达式?假设我的流在可能的正则表达式匹配的中间切入了缓冲区,我想如果发生这种情况,我将丢失该数据。另外,数据不是结构化的,所以我没有意识到解析它的方法比正则表达式。
请让我知道如果我不清楚我的解释,英语不是我的主要语言,但我也知道英语社区是最大也最快也最可靠的。NodeJS:读取一个大的csv文件

在此先感谢。

+0

出于好奇,有没有你正在使用节点一个原因?根据我的经验,Python或R更适合这项任务。 – spicypumpkin

+0

为什么会流切断缓冲区?像这样逐行阅读 - https://stackoverflow.com/questions/16010915/parsing-huge-logfiles-in-node-js-read-in-line-by-line –

+0

@spicypumpkin因为这是一个单一的时间任务和我更熟悉js –

回答

2

有稳定readline核心模块

,你可以做到这一点

let lineReader = require('readline').createInterface({ 
    input: require('fs').createReadStream('file.csv') 
}) 

lineReader.on('line', (line) => { 
    // do regexs with line 
})