0
我真的有json数组(〜8GB)的大文件。我需要将它分成一组小文件,每个小文件包含数组的一部分。用JSON数组分割一个真正长的文件
该数组仅包含对象。
我决定实现这个算法:
- 读取文件的符号
- 添加符号来缓冲
- 尝试解析缓冲区为JSON对象。
- 如果解析写入对象的文件
- 当文件达到一定大小,更改文件
我尝试自己实现它,但像这样的东西完成:
var fs = require('fs');
readable = fs.createReadStream("walmart.dump", {
encoding: 'utf8',
fd: null,
});
var chunk, buffer = '', counter=0;
readable.on('readable', function() {
readable.read(1);
while (null !== (chunk = readable.read(1))) {
buffer += chunk; // chunk is one symbol
console.log(buffer.length);
if (chunk !== '}') continue;
try {
var res = JSON.parse(buffer);
console.log(res);
readable.read(1);
readable.read(1);
readable.read(1);
//Array.apply(null, {length: 10}).map(function(){return readable.read(1)});
buffer = '{';
} catch(e) { }
}
})
有人解决了类似的问题吗?
我试过使用模块,但是我实现的一些对象真的很大'错误:超过最大缓冲区长度:textNode' – kharandziuk
Clarinet公开'MAX_BUFFER_LENGTH'字段设置为'60 * 1024'。如果遇到最大缓冲区长度超出错误,可以为该字段设置更高的值。 – saintedlama