我正在使用Node.js,MySQL和Sequelize。我想一次在表格中插入一些10k行。该表具有自定义primaryKey
字段,即手动设置。数据从网上下载并重叠。
如果数据中的任何行具有表中已存在的唯一键,我希望版本bulkCreate
不会失败。这种事情是通过INSERT ... ON DUPLICATE KEY UPDATE
构造在MySQL中完成的。
如何在Sequelize中完成?
答案 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