我正在尝试完成一项看起来不仅应该非常简单,而且是一个足够常见的任务,以至于应该有直接的软件包可用于完成它。我希望将一个大型CSV文件(从关系数据库表导出)转换为JavaScript对象数组。此外,我还想将其导出到.json
文件 fixture。
CSV示例:
a,b,c,d
1,2,3,4
5,6,7,8
...
期望的 JSON:
[
{"a": 1,"b": 2,"c": 3,"d": 4},
{"a": 5,"b": 6,"c": 7,"d": 8},
...
]
我尝试了几个node CSV解析器、流处理库和所谓的CSV转JSON库,但似乎都无法得到我想要的结果,或者只有在文件较小的情况下才有效。我的文件大小近1 GB,包含约40m行(会创建40m个对象)。我预计需要将输入和/或输出进行流处理以避免内存问题。
以下是我尝试过的软件包:
- https://github.com/klaemo/csv-stream
- https://github.com/koles/ya-csv
- https://github.com/davidgtonge/stream-convert(虽然能工作,但速度极慢,几乎无用,因为我经常更改数据集。它花费了将近3个小时来解析一个60 MB的csv文件)
- https://github.com/cgiffard/CSVtoJSON.js
- https://github.com/wdavidw/node-csv-parser(似乎不适用于将csv转换为其他格式)
- https://github.com/voodootikigod/node-csv
我正在使用Node 0.10.6,希望能够推荐一个简单易用的解决方案。也许自己编写代码是最好的选择,但由于Node在0.10.x中改变了API,因此我不确定从哪里开始使用所有流处理功能。
event-stream
,但当它到达es.map
时就会失败。我会继续努力,希望能解决这个问题。 - neverfox