私はcsv-to-json、CSVファイルを処理するためのきちんとしたライブラリを使用しています。Node.jsで読み取り可能なストリームを一時停止する
大規模な(200万行以上)CSVを処理してDBに挿入する必要があるユースケースがあります。
これを行うにはメモリの問題に遭遇せずに、CSVをストリームとして処理し、10000行ごとにストリームを一時停止し、DBに行を挿入してからストリームを再開します。
何らかの理由で私は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
は(それは私が私のCSVを持っているどのように多くの行です)200回記録されます - ストリームが通過する前に一時停止されているので、私は何かをログに記録しないことを期待していましたそれ以上にfromStream()
だあなたは、データベース内の時間の挿入に1行をしているの?キューを作成し、同時に実行するリクエストを制限したり、メモリリークを防ぎ、リクエストをフラッシュしないように非同期メソッドを使用するのはなぜですか? –
@AsifSeed私は、ストリームを一時停止する以外の何かに興味がありません。それが実行可能かどうかについての情報です。どうもありがとうございます。 –