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