Описание
У меня есть очень большой файл CSV (около 1 ГБ), который я хочу обработать в виде байтовых блоков размером около 10 МБ каждый. Для этой цели я создаю читаемый поток с параметром байтового диапазона fs.createReadStream(sampleCSVfile, { start: 0, end: 10000000 })
Задача
Используя вышеуказанный подход, поток чтение из файла CSV содержит данные для последней строки, которая не является полной. Мне нужен способ определить индекс байтов, при котором произошел последний разрыв строки, и запустить мой следующий читаемый поток с этим байтовым индексом.
Пример CSV: (игнорировать строку заголовка)
John,New York,52
Stacy,Chicago,19
Lisa,Indianapolis,40
Пример операции:
fs.createReadStream(sampleCSVfile, { start: 0, end: 99 })
Возвращенные данные: (обрезано до указанного выше байтового диапазона)
John,New York,52
Stacy,Chicago,19
Lisa,I
Обязательный или ожидаемый:
John,New York,52
Stacy,Chicago,19
Итак, предположим, что из потока, извлеченного последней последней строкой, заканчивающейся байтовым индексом 78, моя следующая рекурсивная операция будет быть: fs.createReadStream(sampleCSVfile, { start: 79, end: 178 })