MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Node.js और async.queue के साथ MongoDB में बड़े CSV सम्मिलित करना

आपको स्ट्रीम के साथ एक बड़ी फ़ाइल से निपटना चाहिए।

यहां एक संभावित समाधान है:

var queue = async.queue(collection.insert.bind(collection), 5);

csv()
.from.path('./input.csv', { columns: true })
.transform(function (data, index, cb) {
    queue.push(data, function (err, res) {
        if (err) return cb(err);
        cb(null, res[0]);
    });
})
.on('error', function (err) {
    res.send(500, err.message);
})
.on('end', function () {
    queue.drain = function() {
        res.send(200);
    };
});

कृपया ध्यान दें:

  • कि हम node-csv के स्ट्रीम API का उपयोग करते हैं , जो सुनिश्चित करता है कि डेटा को उसी समय संसाधित किया जाता है जब फ़ाइल पढ़ी जाती है:इस तरह पूरी फ़ाइल एक बार में मेमोरी में नहीं पढ़ी जाती है। transform प्रत्येक रिकॉर्ड के लिए हैंडलर निष्पादित किया जाता है;
  • कि हम async.queue का उपयोग करते हैं , जो एक अतुल्यकालिक प्रसंस्करण कतार है:अधिकतम 5 हैंडलर (finalcollection.insert) ) समानांतर में निष्पादित होते हैं।

इस उदाहरण का परीक्षण किया जाना चाहिए, क्योंकि मुझे वास्तव में यकीन नहीं है कि यह वास्तव में पीठ के दबाव को अच्छी तरह से संभालता है। साथ ही, कतार के समवर्ती स्तर को आपके विशिष्ट कॉन्फ़िगरेशन में समायोजित किया जाना चाहिए।

आप एक कार्य सार भी पा सकते हैं। ।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js और MongoDb . में एक सिंक्रोनस एप्लिकेशन की संरचना

  2. गतिशील रूप से मोंगोइड के साथ सूचकांक बनाएं

  3. MongoDB उपयोगकर्ता प्रबंधन का अवलोकन

  4. नेस्टेड वस्तु पर मोंगो अनुक्रमण

  5. MongoDB संग्रह पर दिनांक सीमा को क्वेरी कैसे करें जहाँ ISO दिनांक स्ट्रिंग फ़ील्ड में संग्रहीत है?