sql >> Base de Datos >  >> RDS >> PostgreSQL

Inserción masiva en Postgres con brianc/node-postgres

Hice una búsqueda de la misma pregunta, pero no encontré ninguna solución todavía. Con la biblioteca asíncrona, es muy simple usar la consulta varias veces y hacer el manejo de errores necesario.

Puede ser que esta variante de código ayude (para insertar 10.000 objetos json pequeños en una base de datos vacía tomó 6 segundos).

Cristóbal

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