আমার কাছে একটি ফাইল রয়েছে যা জেএসএন ফর্মে অনেকগুলি জাভাস্ক্রিপ্ট অবজেক্টগুলিকে সঞ্চয় করে এবং আমার ফাইলটি পড়তে হবে, প্রতিটি বস্তু তৈরি করতে হবে এবং সেগুলি দিয়ে কিছু করতে হবে (আমার ক্ষেত্রে এটি একটি ডিবিতে সন্নিবেশ করা উচিত)। জাভাস্ক্রিপ্ট অবজেক্টগুলি একটি ফর্ম্যাট প্রতিনিধিত্ব করতে পারে:
ফর্ম্যাট এ:
[{name: 'thing1'},
....
{name: 'thing999999999'}]
বা ফর্ম্যাট বি:
{name: 'thing1'} // <== My choice.
...
{name: 'thing999999999'}
মনে রাখবেন যে ...জেএসএএন অনেকগুলি বিষয় নির্দেশ করে। আমি সচেতন আমি পুরো ফাইলটি মেমরিতে পড়তে পারি এবং তারপরে এটি ব্যবহার করতে পারি 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!");
});*/
দ্রষ্টব্য, আমি পুরো ফাইলটি মেমোরিতে পড়তে বাধা দিতে চাই। সময়ের দক্ষতা আমার কাছে আসে না। হ্যাঁ, আমি একবারে বেশ কয়েকটি অবজেক্ট পড়ার চেষ্টা করতে পারি এবং সেগুলি একবারে sertোকাতে পারি, তবে এটি একটি পারফরম্যান্সের ঝাঁকুনি - আমার এমন একটি উপায়ের দরকার যা মেমরির ওভারলোডের কারণ না হওয়ার গ্যারান্টিযুক্ত, ফাইলটিতে কতগুলি অবজেক্ট রয়েছে তা বিবেচনা না করেই ।
আমি ব্যবহার করা চয়ন করতে পারেন FormatAবা FormatBহয়তো বা অন্য কিছু, শুধু আপনার উত্তর উল্লেখ করুন। ধন্যবাদ!