Sequelize:批量更新

时间:2015-02-01 02:07:24

标签: mysql node.js sequelize.js

我正在使用Node.js,MySQL和Sequelize。我想一次在表格中插入一些10k行。该表具有自定义primaryKey字段,即手动设置。数据从网上下载并重叠。

如果数据中的任何行具有表中已存在的唯一键,我希望版本bulkCreate不会失败。这种事情是通过INSERT ... ON DUPLICATE KEY UPDATE构造在MySQL中完成的。

如何在Sequelize中完成?

4 个答案:

答案 0 :(得分:12)

将ignoreDuplicates设置为true的选项对象传递给bulkCreate

bulkCreate([...], { ignoreDuplicates: true })

答案 1 :(得分:7)

Yuri的回答将忽略重复... updateOnDuplicate有一个选项:

  

如果行密钥已存在,则更新字段(重复密钥更新时)? (仅由mysql& mariadb支持)。默认情况下,所有字段都会更新。

http://docs.sequelizejs.com/en/latest/api/model/#bulkcreaterecords-options-promisearrayinstance

答案 2 :(得分:1)

以下是批量更新的正确语法,已在“ sequelize”上测试:“ 6.0.0”

model.bulkCreate(dataToUpdate, { updateOnDuplicate: ["user_id", "token", "created_at"] })

它将通过dataToUpdate中的第一列值更新updateOnDuplicate中指定的所有列

答案 3 :(得分:-1)

ProductAttribute.bulkCreate(arrayToUpsert,{updateOnDuplicate:['id','attributeValue']}) -这将使用arrayToUpsert

中指示的ID更新每个attributeValue