如何使用 mysljs 在 mySql 和 node.js 中批量插入

Posted

技术标签:

【中文标题】如何使用 mysljs 在 mySql 和 node.js 中批量插入【英文标题】:How to bulk insert in mySql and node.js using mysljs 【发布时间】:2017-05-01 10:48:58 【问题描述】:

我无法使用 node.js lib mysljs 在我的数据库中使用批量插入。

我遵循了以下的答案:

How do I do a bulk insert in mysql using node.js

没有成功。

var sql = "INSERT INTO resources (resource_container_id, name, title, extension, mime_type, size) VALUES ?";

var values = [
  [1, 'pic1', 'title1', '.png', 'image/png', 500], 
  [1, 'pic2', 'title2', '.png', 'image/png', 700]];

return connection.query(sql, [values], (result) => 
    if (err) throw err;
    connection.end();
);

我不断收到错误:

 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'?\' at line 1' 

我也尝试使用 bluebird 提出查询方法,但没有成功,我再次遇到同样的错误。

【问题讨论】:

回调中的错字应该是(err, result)=>...,但这可能不是您在此处描述的错误,因为错误实际上是在某个时候打印的,所以我认为这只是一个复制错误。跨度> 【参考方案1】:

您需要用重音(反引号)字符标记您的键,例如:`key`

让你的query 像这样:

var sql = "INSERT INTO resources (`resource_container_id`, `name`, `title`, `extension`, `mime_type`, `size`) VALUES ?";

【讨论】:

对我不起作用,仍然出现错误。【参考方案2】:

尝试在问号周围使用 ()

var sql = "INSERT INTO resources (resource_container_id, name, title, extension, mime_type, size) VALUES (?) ";

【讨论】:

我的 mysql2 库也有同样的问题,也无法正常工作。【参考方案3】:

只有当我使用 connection.execute() 时我才会遇到同样的问题,然后实际上是因为它没有为准备好的语句实现。

我改用connection.query() 解决了这个问题。

不知道这个答案是否对任何人有帮助。

在我寻找答案时会有所帮助。

【讨论】:

【参考方案4】:

尝试删除 values 周围的方括号

【讨论】:

values 周围的方括号暗示数组

以上是关于如何使用 mysljs 在 mySql 和 node.js 中批量插入的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 RowDataPacket mysql-node.js

51nod1489(dfs)

《叶问》第4期

nod32 开机 不显示桌面

51nod 2006 飞行员匹配

MySQL 集群表未在数据节点上复制