Javascript 为什么此节点csv解析器事件侦听器从未启动?
我想逐行读取一个大型csv文件,将选项卡分隔的值解析为一个javascript对象,然后使用该对象进行处理。这是一般的工作流程 我可以读取原始文件,但由于某种原因,Javascript 为什么此节点csv解析器事件侦听器从未启动?,javascript,node.js,csv,Javascript,Node.js,Csv,我想逐行读取一个大型csv文件,将选项卡分隔的值解析为一个javascript对象,然后使用该对象进行处理。这是一般的工作流程 我可以读取原始文件,但由于某种原因,node csv parser的readable事件从未触发。我看到很多string==…日志消息,但没有解析器可读的消息 import csv from 'csv'; import byline from 'byline'; import {createReadStream} from 'fs'; var readStreamBy
node csv parser
的readable
事件从未触发。我看到很多string==…
日志消息,但没有解析器可读的消息
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);
}
});
});
我在这里遗漏了什么?刚刚找到了一个解决方案。我忽略了添加以下内容的最后一行:
parser.end()代码>您不需要署名。默认情况下,csv解析器将在流式传输时返回一行。请看下面的示例,但是如果我有一个非常大的csv文件,那么整个文件的原始内容不会存储在内存中吗?如果可行的话,我想避免这种情况。流式解析器应该将其从磁盘流式传输,这样就不应该立即将整个文件加载到内存中。csv流式解析器的内存中没有整个文件,但是createReadStream
返回的流不会在其缓冲区中返回整个文件,并将缓冲区存储在内存中?