使用节点JS将记录数组插入mysql

使用节点JS将记录数组插入mysql,mysql,node.js,bulkinsert,node-mysql,bulkloader,Mysql,Node.js,Bulkinsert,Node Mysql,Bulkloader,我有一组数据,比如 var records = [ {Name: '', Id: 1}, {Name: '', Id: 2}, {Name: '', Id: 3}, {Name: '', Id: 4}, {Name: '', Id: 5}, {Name: '', Id: 6} ]; 记录数

我有一组数据,比如

var records = [
               {Name: '', Id: 1},
               {Name: '', Id: 2},
               {Name: '', Id: 3},
               {Name: '', Id: 4},
               {Name: '', Id: 5},
               {Name: '', Id: 6}
              ];
记录数组中可能有数千项

问题1:我们可以创建一个存储过程来接受mysql中的对象数组吗


问题2:有没有办法通过Node JS将此数据批量插入mysql?

您可以批量插入记录数组,但在此之前,您可能需要将其转换为数组数组

我使用array reduce得到一个类似这样的数组

let j=[
               {Name: '', Id: 1},
               {Name: '', Id: 2},
               {Name: '', Id: 3},
               {Name: '', Id: 4},
               {Name: '', Id: 5},
               {Name: '', Id: 6}
              ];

              let values=j.reduce((o,a)=>{
                    let ini=[];
                    ini.push(a.Name);
                    ini.push(a.Id);
                    o.push(ini);
                    return o
              },[])
              console.log(values);
这将输出

[["",1],["",2],["",3],["",4],["",5],["",6]]
现在插入mysql数据库

1-使用普通回调

因此,多数据插入的格式应该类似于
[[a,b],[b,c],[d,k]]]

2-使用承诺

3-使用异步等待


有没有办法得到插入项列表的结果?你是说插入后创建的主键@MoeFarYup,我在找类似的东西
const con=require('./mysql.js'); //mysql connectionin mysql.js 

var sql = "INSERT INTO customers (name, id) VALUES ?";
con.query(sql, [values], function (err, result) { //pass values array (from above)  directly here
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
});
var Promise = require("bluebird");//for promises
const promisecon=Promise.promisifyAll(require('./mysql.js'));//
  var sql = "INSERT INTO customers (name, id) VALUES ?";
    promisecon.queryAsync(sql,[values]).then((result)=>{//bluebird identifies with Async
      console.log(result);
    }).catch(function(err){
        console.log(err);
      })
 var sql = "INSERT INTO customers (name, id) VALUES ?";
async function build() {
            try {
              const result =await con.queryAsync(sql,[values]);

                 console.log(result);

            } catch (err) {
              // do something
            }
          }
          build();