通过 Node.js 将重复键更新中的行批量插入到 mysql 中,同时还执行 mysql 函数

Bulk inserting rows on duplicate key update into mysql through Node.js while also executing a mysql function

我正在尝试使用 node-mysql 发出批量行插入,通常这不是问题,但我需要在其中一列上执行 MySQL 函数。

通常我会执行这样的事情并且没问题:

INSERT INTO table1 (super_repo, reference, path, sub_repo, commit)
VALUES ?
ON DUPLICATE KEY
 UPDATE sub_repo = VALUES(sub_repo), commit = VALUES(commit)

但是,在这种情况下,'commit' 列是一个 BINARY 字段,因此我需要对提交字符串执行 MySQLUNHEX(),以便将其正确存储在数据库。

传递模块这个 SQL 抛出错误:ER_PARSE_ERROR

INSERT INTO table1 (super_repo, reference, path, sub_repo, commit)
VALUES (?, ?, ?, ?, UNHEX(?))
ON DUPLICATE KEY
 UPDATE sub_repo = VALUES(sub_repo), commit = VALUES(commit)

我猜这是行不通的,因为它没有告诉 MySql 模块我正在尝试插入多行。 有什么办法可以让它工作吗?或者,是否有等效于执行 MySQL UNHEX() 的节点,以便我可以使用上面的第一个 SQL 查询?

我这样做是因为我在 MySQL.

中采用 40 个字符的 SHA1 哈希并将其压缩到一个 20 个字符的 BINARY 字段中

好的,所以我想出了如何使用第一个查询在 Node 6.x 中执行此操作。

我必须传递的值是这样的:

[[[1, 1, 1, 1, Buffer.from('<sha1>', 'hex')],[2, 2, 2, 2, Buffer.from('<sha1>', 'hex')]]]