PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Inserisci in blocco in Postgres con brianc/node-postgres

Ho fatto una ricerca per la stessa domanda, ma non ho ancora trovato una soluzione. Con la libreria asincrona è molto semplice utilizzare la query più volte ed eseguire la necessaria gestione degli errori.

Potrebbe essere utile questa variante di codice (per inserire 10.000 piccoli oggetti json in un database vuoto ci sono voluti 6 secondi).

Cristoph

function insertData(item,callback) {
  client.query('INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid)
       values ($1,$2,$3)', [
        item.subscription_guid,
        item.employer_guid,
        item.employee_guid
       ], 
  function(err,result) {
    // return any err to async.each iterator
    callback(err);
  })
}
async.each(datasetArr,insertData,function(err) {
  // Release the client to the pg module
  done();
  if (err) {
    set_response(500, err, res);
    logger.error('error running query', err);
    return console.error('error running query', err);
  }
  logger.info('subscription with created');
  set_response(201);
})