繁体   English   中英

通过node.js向mysql中插入多行

[英]insert multiple rows into mysql through node.js

我想通过 node.js mysql 模块将多行插入到 mysql 中。 我拥有的数据是

var data = [{'test':'test1'},{'test':'test2'}];

我正在使用游泳池

 pool.getConnection(function(err, connection) {
     connection.query('INSERT INTO '+TABLE+' SET ?', data,   function(err, result) {
          if (err) throw err;
            else {
                console.log('successfully added to DB');
                connection.release();
            }
      });
 });
}

这失败了。

有没有办法让我进行批量插入并在所有插入完成后调用函数?

问候锤子

你也可以试试这个方法

假设mytable包括以下列:姓名、电子邮件

var inserts = [];
inserts.push(['name1', 'email1']);
inserts.push(['name2', 'email2']);
conn.query({
sql: 'INSERT into mytable (name, email) VALUES ?',
values: [inserts]
});

这应该工作

您可以使用嵌套数组将多行插入到 mysql 中。 您可以从这篇文章中看到答案: How do I do a bulk insert in mySQL using node.js

在多次回到这个问题之后,我想我已经找到了解决这个问题的最干净的方法。

您可以将对象的data数组拆分为一组键insert_columns和包含对象值的数组insert_data

const data = [
    {test: 'test1', value: 12},
    {test: 'test2', value: 49}
]

const insert_columns = Object.keys(data[0]);
// returns array ['test', 'value']

const insert_data = data.reduce((a, i) => [...a, Object.values(i)], []);
// returns array [['test1', 12], ['test2', 49]]

_db.query('INSERT INTO table (??) VALUES ?', [insert_columns, insert_data], (error, data) => {
    // runs query "INSERT INTO table (`test`, `value`) VALUES ('test1', 12), ('test2', 49)"
    // insert complete 
})

我希望这可以帮助遇到这个问题的任何人,我可能会在几个月内再次使用谷歌搜索来找到我自己的答案🤣

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM