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.