MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Memasukkan CSV Besar ke MongoDB dengan Node.js dan async.queue

Anda harus berurusan dengan file besar dengan aliran.

Berikut adalah solusi yang mungkin:

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);
    };
});

Harap diperhatikan:

  • bahwa kami menggunakan API aliran node-csv , yang memastikan bahwa data diproses pada saat yang sama saat file dibaca:dengan cara ini seluruh file tidak dibaca dalam memori sekaligus. transform handler dieksekusi untuk setiap record;
  • bahwa kami menggunakan async.queue , yang merupakan antrian pemrosesan asinkron:paling banyak 5 penangan (finalcollection.insert ) dijalankan secara paralel.

Contoh ini harus diuji, karena saya tidak begitu yakin bahwa itu menangani tekanan balik dengan sangat baik. Selain itu, tingkat konkurensi antrian harus disesuaikan dengan konfigurasi spesifik Anda.

Anda juga dapat menemukan inti yang berfungsi di sini .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Koneksi yang tersedia MongoDB

  2. Instal MongoDB di Manjaro

  3. Proyekkan struktur tertanam yang berbeda dengan nama yang sama

  4. MongoDB + Aplikasi Web:Basis Data per pengguna

  5. MongoDB $agregate $push beberapa bidang di Java Spring Data