nodejs mysql批量INSERT在DUPLICATE KEY UPDATE上
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nodejs mysql批量INSERT在DUPLICATE KEY UPDATE上,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2190字,纯文字阅读大概需要4分钟。
内容图文
我试图用一个单独的mysql语句插入大约1000行,如果密钥已经存在则更新该行.
我在使用this模块的nodejs中这样做.
我的代码目前看起来像这样:
this.conn.query("INSERT INTO summoners VALUES ?" +
" ON DUPLICATE KEY UPDATE name = VALUES(name), rank = VALUES(rank), points = VALUES(points), satisfyCriteria = VALUES(satisfyCriteria), priority = VALUES(priority)," +
" recentlyChecked = VALUES(recentlyChecked), hotStreak = VALUES(hotStreak), veteran = VALUES(veteran), freshBlood = VALUES(freshBlood), " +
" wins = VALUES(wins), losses = VALUES(losses)", sql_data, (err) => {
if( err ){
logger.error("Error during summoner insert ", err)
}
else {
cb();
}
})
sql_data是一个嵌套数组.根据libaray的文档:
Nested arrays are turned into grouped lists (for bulk inserts), e.g.
[[‘a’, ‘b’], [‘c’, ‘d’]] turns into (‘a’, ‘b’), (‘c’, ‘d’)
因此,我认为这应该工作,但目前我得到这个错误
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Hy Dag3', '55040464', 'master', 114, true, false, false, false, true, false, 34' at line 1
调试sql看起来像这样:
'INSERT INTO summoners VALUES \'Hy Dag3\', \'55040464\', \'master\', 114, true, false, false, false, true, false, 343, 279 ON DUPLICATE KEY UPDATE name = VALUES(name), rank = VALUES(rank), points = VALUES(points), satisfyCriteria = VALUES(satisfyCriteria), priority = VALUES(priority), recentlyChecked = VALUES(recentlyChecked), hotStreak = VALUES(hotStreak), veteran = VALUES(veteran), freshBlood = VALUES(freshBlood), wins = VALUES(wins), losses = VALUES(losses)'
这是不正确的.
任何人都可以帮我完成这项工作吗?
解决方法:
我会尝试一系列对象
[
{name:'Hy Dag3', points:'55040464', rank:'master', hotStreak:114,...},
{name:'Hkj', points:'554064', rank:'novice', hotStreak:14,...}
]
然后
this.conn.query("INSERT summoners SET ? " +
" ON DUPLICATE KEY UPDATE name = VALUES(name), rank = VALUES(rank)...
因为根据doc:
var post = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function (error, results, fields) {
if (error) throw error;
// Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'
内容总结
以上是互联网集市为您收集整理的nodejs mysql批量INSERT在DUPLICATE KEY UPDATE上全部内容,希望文章能够帮你解决nodejs mysql批量INSERT在DUPLICATE KEY UPDATE上所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。