Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fügen Sie mit Node JS ein Array von Datensätzen in mysql ein

Sie können das Array von Datensätzen massenhaft einfügen, aber vorher müssen Sie es möglicherweise in ein Array von Arrays konvertieren

Ich verwende Array Reduce, um ein Array wie dieses zu erhalten

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

Dies gibt

aus
[["",1],["",2],["",3],["",4],["",5],["",6]]

Jetzt in die mysql-Datenbank einfügen

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

das Format der mehrfachen Dateneinfügung sollte also wie folgt aussehen:[[[a,b],[b,c],[d,k]]]

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