我正在尝试做一些看起来不仅应该相当容易完成的事情,而且是一项足够常见的任务,可以使用简单的软件包来完成它。我希望获取一个大型 CSV 文件(从关系数据库表中导出)并将其转换为 JavaScript 对象数组。此外,我想将其导出到.json
文件夹具。
示例 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},
...
]
我已经尝试了几个节点 CSV 解析器、流媒体、自称 CSV-to-JSON 库,但我似乎无法得到我想要的结果,或者如果我只能在文件较小的情况下工作。我的文件大小接近 1 GB,行数约为 40m(这将创建 40m 个对象)。我希望它需要流式传输输入和/或输出以避免内存问题。
以下是我尝试过的软件包:
- https://github.com/klaemo/csv-stream
- https://github.com/koles/ya-csv
- https://github.com/davidgtonge/stream-convert(工作但它非常慢以至于没用,因为我经常更改数据集。解析一个 60 MB 的 csv 文件花了将近 3 个小时)
- 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。