NodeJS:读取一个大的 csv 文件

Posted

技术标签:

【中文标题】NodeJS:读取一个大的 csv 文件【英文标题】:NodeJS: reading a big csv file 【发布时间】:2018-01-19 10:17:18 【问题描述】:

所以我有一个 70mb 的 .csv 文件,我想解析并转换为 json,尝试在 500kb 的测试 csv 中进行 json 转换,我找到了一个使用正则表达式的简单解决方案。 问题是当我输入实际数据时,我不能再使用 fs.readFileSync,所以我需要使用流。 我的问题是:如何使用流和正则表达式?假设我的流在可能的正则表达式匹配中间切断了缓冲区,我认为如果发生这种情况我将丢失该数据。此外,数据不是结构化的,所以我没有意识到除了正则表达式之外的其他解析方式。 如果我的解释不清楚,请告诉我,英语不是我的主要语言,但我知道英语社区是最大的也是最快和更可靠的。

提前致谢。

【问题讨论】:

出于好奇,您为此使用 node 有什么原因吗?根据我的经验,Python 或 R 更适合这项任务。 为什么流会切断缓冲区?像这样逐行阅读 - ***.com/questions/16010915/… @spicypumpkin 因为这是一个单一的时间任务,我更熟悉 js 【参考方案1】:

有一个稳定的readline核心模块

你可以这样做

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

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

【讨论】:

以上是关于NodeJS:读取一个大的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将读取一个大的 csv 文件分成大小均匀的块?

NodeJS 在引导一个 csv 文件后崩溃

如何在python中读取一个大的tsv文件并将其转换为csv

用逗号读取大的 .csv 文件 MATLAB [重复]

使用 NodeJS 解析 CSV 文件

nodejs读取csv