通过node.js将多行插入mysql

Posted

技术标签:

【中文标题】通过node.js将多行插入mysql【英文标题】:insert multiple rows into mysql through node.js 【发布时间】:2014-08-12 11:51:43 【问题描述】:

我想通过 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();
            
      );
 );

失败了。

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

问候 锤子

【问题讨论】:

How do I do a bulk insert in mySQL using node.js的可能重复 【参考方案1】:

你也可以试试这个方法

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

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

这应该可以工作

【讨论】:

不适合批量数据。【参考方案2】:

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

您可以将 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 
)

我希望这可以帮助任何遇到这个问题的人,我可能会在几个月后再次搜索这个以找到我自己的答案?

【讨论】:

帮了很多忙。谢谢【参考方案3】:

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

【讨论】:

以上是关于通过node.js将多行插入mysql的主要内容,如果未能解决你的问题,请参考以下文章

Node.js:如何将全局变量传递到通过 require() 插入的文件中?

Node.js 中的 PostgreSQL 多行更新

使用 Node.js 将数组插入 MongoDB 子文档

在使用 node.js 完成所有承诺后,我想在 mongodb 中插入数据

通过yii2中的checkboxcolumn将多行插入表格

使用Node.js将数据数组插入数据库[重复]