0
我想逐行閱讀一個大的csv文件,將製表符分隔的值解析成一個javascript對象,然後用這個對象做東西。這是一般的工作流程。爲什麼這個node-csv-parser事件偵聽器永遠不會觸發?
我可以讀取原始文件,但由於某種原因node-csv-parser
的readable
事件永遠不會發射。我看到很多string == ...
日誌消息,但沒有parser readable
消息。
import csv from 'csv';
import byline from 'byline';
import {createReadStream} from 'fs';
var readStreamByLine = byline(createReadStream(file));
readStreamByLine.on('data', function(chunk) {
var string = chunk.toString();
console.log('string == ' + string);
var parser = csv.parse({
delimiter: '\t'
});
parser.write(string);
parser.on('readable',() => {
console.log('parser readable');
while (csvdata = parser.read()) {
console.log(csvdata);
}
});
});
我在這裏錯過了什麼?
你不需要署名。默認情況下,csv解析器將在您流式傳輸時返回一行。看看例子https://github.com/wdavidw/node-csv-parse/blob/master/samples/stream.js – tkone
的權利,但如果我有一個非常大的csv文件,將不會整個文件的原始內容被存儲在內存中?我想避免這種情況,如果它是可行的。 –
流解析器應該從磁盤流式傳輸它,因此它不應該一次加載整個文件到內存中。 – tkone