【发布时间】:2026-01-07 21:45:01
【问题描述】:
我正在尝试做一些看起来不仅应该相当容易完成的事情,而且是一项足够常见的任务,可以使用简单的软件包来完成它。我希望获取一个大型 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。
【问题讨论】:
-
您确定您没有忘记删除“所需的 JSON”部分中的一些大括号吗?不应该是
{"a": 1, "b": 2, "c": 3, "d": 4},吗? -
糟糕,谢谢。已编辑。
标签: javascript json node.js csv