Я использую csv-to-json, аккуратную библиотеку для обработки файлов CSV.Приостановка читаемого потока в Node.js
У меня есть прецедент, где мне нужно обработать большой (> 2 миллиона строк) CSV и вставить его в БД.
Чтобы сделать это без проблем с памятью, я намерен обрабатывать CSV как поток, приостанавливая поток каждые 10000 строк, вставляя строки в мой БД и затем возобновляя поток.
По какой-то причине я не могу представить pause
ручей.
Возьмем, например, следующий код:
const rs = fs.createReadStream("./foo.csv");
rs.pause();
let count = 0;
csv()
.fromStream(rs)
.on("json", (json) => {
count++;
console.log(count);
})
.on("done",() => {
cb(null, count);
})
.on("error", (err) => {
cb(err);
})
count
регистрируется в 200 раз (это сколько строк у меня в CSV) - Я ожидал, что это не что-нибудь войти, так как поток остановился перед передачей оно до fromStream()
вы делаете одну строку в момент вставки в базе данных? почему вы не создаете очередь и не ограничиваете одновременное выполнение запросов или используете какой-либо метод async для предотвращения утечек памяти и предотвращения запросов на очистку? –
@AsifSaeed Мне не интересно ни что иное, кроме приостановки потока или информации о том, выполнимо это или нет. Спасибо в любом случае. –