Я пытаюсь сделать что-то похожее на то, что это должно быть не только достаточно простым, но достаточно общей задачей, чтобы для этого были доступны простые пакеты. Я хочу взять большой 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},
...
]
Я пробовал несколько парсеров node CSV, стримеров, самопровозглашенных библиотек CSV-to-JSON, но я не могу получить результат, который я хочу, или если я могу его использовать, только если файлы меньше. Размер моего файла составляет около 1 ГБ с ~ 40 м строк (что создало бы 40 м объектов). Я ожидаю, что для предотвращения проблем с памятью потребуется потоковая передача ввода и/или вывода.
Вот пакеты, которые я пробовал:
- https://github.com/klaemo/csv-stream
- https://github.com/koles/ya-csv
- https://github.com/davidgtonge/stream-convert (работает, но это так чрезвычайно медленным, поскольку это бесполезно, поскольку я часто меняю данные. Потребовалось около 3 часов для анализа файла csv размером 60 МБ).
- 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, тем более, что они изменили API в 0.10.x.