Saltar al contenido

¿Cómo hago una inserción masiva en mySQL usando node.js?

Después de de una prolongada recopilación de información hemos podido solucionar este enigma que tienen algunos de nuestros lectores. Te ofrecemos la respuesta y deseamos servirte de mucha ayuda.

Solución:

Las inserciones a granel son posibles mediante el uso de anidados arrayver la página de github

Las matrices anidadas se convierten en listas agrupadas (para inserciones masivas), por ejemplo
[['a', 'b'], ['c', 'd']] se convierte en ('a', 'b'), ('c', 'd')

Simplemente inserta un anidado array de elementos

Aquí se da un ejemplo

var mysql = require('mysql');
var conn = mysql.createConnection(
    ...
);

var sql = "INSERT INTO Test (name, email, n) VALUES ?";
var values = [
    ['demian', '[email protected]', 1],
    ['john', '[email protected]', 2],
    ['mark', '[email protected]', 3],
    ['pete', '[email protected]', 4]
];
conn.query(sql, [values], function(err) 
    if (err) throw err;
    conn.end();
);

Nota: values es un array de arreglos envueltos en un array

[ [ [...], [...], [...] ] ]

También hay un paquete node-msql totalmente diferente para la inserción masiva

La respuesta de @ Ragnar123 es correcta, pero veo a muchas personas decir en los comentarios que no funciona. Tuve el mismo problema y parece que necesitas envolver tu array en [] como esto:

var pars = [
    [99, "1984-11-20", 1.1, 2.2, 200], 
    [98, "1984-11-20", 1.1, 2.2, 200], 
    [97, "1984-11-20", 1.1, 2.2, 200]
];

Tiene que ser pasado como [pars] en el método.

Estaba buscando una respuesta sobre la inserción masiva de objetos.

La respuesta de Ragnar123 me llevó a hacer esta función:

function bulkInsert(connection, table, objectArray, callback) 
  let keys = Object.keys(objectArray[0]);
  let values = objectArray.map( obj => keys.map( key => obj[key]));
  let sql = 'INSERT INTO ' + table + ' (' + keys.join(',') + ') VALUES ?';
  connection.query(sql, [values], function (error, results, fields) 
    if (error) callback(error);
    callback(null, results);
  );


bulkInsert(connection, 'my_table_of_objects', objectArray, (error, response) => 
  if (error) res.send(error);
  res.json(response);
);

¡Espero eso ayude!

Recuerda algo, que tienes la capacidad de reseñar tu experiencia si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *