我有一个大型CSV文件(~500mb),我想使用BabyParse(PapaParse的节点版本)转换为JSON。对于较小的文件,我可以将CSV读入字符串,然后将字符串传递给parse
。但是,500mb的文件太大而无法以这种方式读入字符串。
我有一个解决方法,将CSV文件作为一行逐行读取,但它的速度非常慢(见下文)。有人可以告诉我在Papa / Baby解析中使用大型CSV文件的更快方法吗?
var Baby = require('babyparse');
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var file = '500mbbigtest.csv';
//var content = fs.readFileSync(file, { encoding: 'binary' }); DOESN'T WORK
var instream = fs.createReadStream('500mbbigtest.csv');
var outstream = new stream;
var rl = readline.createInterface(instream, outstream);
rl.on('line', function(line) {
parsed = Baby.parse(line, {fastMode: false});
rows = parsed.data;
rows = JSON.stringify(rows);
fs.appendFileSync("blahblahblah.json", rows);
});