JSON 형식으로 많은 JavaScript 개체를 저장하는 파일이 있으며 파일을 읽고 각 개체를 만들고 작업을 수행해야합니다 (제 경우에는 db에 삽입). JavaScript 객체는 다음과 같은 형식으로 나타낼 수 있습니다.
형식 A :
[{name: 'thing1'},
....
{name: 'thing999999999'}]
또는 형식 B :
{name: 'thing1'} // <== My choice.
...
{name: 'thing999999999'}
참고는 ...
JSON 객체를 많이 나타냅니다. 전체 파일을 메모리로 읽고 다음과 같이 사용할 수 있다는 것을 알고 있습니다 JSON.parse()
.
fs.readFile(filePath, 'utf-8', function (err, fileContents) {
if (err) throw err;
console.log(JSON.parse(fileContents));
});
그러나 파일이 매우 클 수 있으므로이를 수행하기 위해 스트림을 사용하는 것이 좋습니다. 스트림에서 볼 수있는 문제는 파일 내용이 언제든지 데이터 청크로 분할 될 수 있다는 것입니다. 그렇다면 JSON.parse()
이러한 객체에서 어떻게 사용할 수 있습니까?
이상적으로 각 객체는 별도의 데이터 청크로 읽혀 지지만 어떻게해야할지 잘 모르겠습니다 .
var importStream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'});
importStream.on('data', function(chunk) {
var pleaseBeAJSObject = JSON.parse(chunk);
// insert pleaseBeAJSObject in a database
});
importStream.on('end', function(item) {
console.log("Woot, imported objects into the database!");
});*/
참고로 전체 파일을 메모리로 읽는 것을 방지하고 싶습니다. 시간 효율성은 나에게 중요하지 않습니다. 예, 여러 개체를 한 번에 읽고 모두 한 번에 삽입하려고 할 수 있지만 이는 성능 조정입니다. 파일에 포함 된 개체 수에 관계없이 메모리 과부하를 일으키지 않는 방법이 필요합니다. .
나는 사용 FormatA
하거나 FormatB
또는 다른 것을 선택할 수 있습니다 . 대답에 지정하십시오. 감사!