Ham*_*mer 6 mysql node.js node-mysql
我想通过 node.js mysql 模块将多行插入到 mysql 中。我拥有的数据是
var data = [{'test':'test1'},{'test':'test2'}];
Run Code Online (Sandbox Code Playgroud)
我正在使用游泳池
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();
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
这失败了。
有没有办法让我进行批量插入并在所有插入完成后调用函数?
问候锤子
你也可以尝试这个方法
假设mytable包含以下列:姓名、电子邮件
var inserts = [];
inserts.push(['name1', 'email1']);
inserts.push(['name2', 'email2']);
conn.query({
sql: 'INSERT into mytable (name, email) VALUES ?',
values: [inserts]
});
Run Code Online (Sandbox Code Playgroud)
这应该有效
多次回到这个问题后,我想我已经找到了解决这个问题的最干净的方法。
您可以将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
})
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助任何遇到这个问题的人,我可能会在几个月后再次搜索这个问题以找到我自己的答案
| 归档时间: |
|
| 查看次数: |
27672 次 |
| 最近记录: |