1. ホーム
  2. json

[解決済み] Sequelizeとnode.jsを使った一括挿入の方法

2022-02-27 18:28:30

質問

js + sequelizeで、JSONを使って280K行のデータを挿入します。 JSONは280Kの配列です。バルク挿入をチャンクで行う方法はありますか?データの更新にかなりの時間がかかることが分かっています。私はデータを40K行に削減しようとしたとき、それは迅速に動作します。私は正しいアプローチをしています。アドバイスお願いします。私はバックエンドとしてpostgresqlを使用しています。

PNs.bulkCreate(JSON_Small)
        .catch(function(err) {
            console.log('Error ' + err);
        })
        .finally(function(err) {
            console.log('FINISHED  + ' \n +++++++ \n');

        });

解決方法は?

を利用しました。 cargo ユーティリティを使用して、一度に1000行まで読み込むことができます。 csvをデータベースにロードするための以下のコードを参照してください。

var fs = require('fs'),
    async = require('async'),
    csv = require('csv');

var input = fs.createReadStream(filename);
var parser = csv.parse({
  columns: true,
  relax: true
});
var inserter = async.cargo(function(tasks, inserterCallback) {
    model.bulkCreate(tasks).then(function() {
        inserterCallback(); 
      }
    );
  },
  1000
);
parser.on('readable', function () {
  while(line = parser.read()) {
    inserter.push(line);
  }
});
parser.on('end', function (count) {
  inserter.drain = function() {
    doneLoadingCallback();
  }
});
input.pipe(parser);