sequelize mysql批量_Sequelize 批量导入和批量更新数据

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 06:23   47   0

Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) -> Promise.>

参数records Array 要创建实例的对象(键/值 对)列表

[options] Object

[options.fields] Array 要插入的字段。默认全部

[options.validate=true] Boolean 插入每条记录前进行验证

[options.hooks=true] Boolean 在执行前/后创建钩子

[options.individualHooks=false] Boolean 在执行前/后为每个实例创建钩子

[options.ignoreDuplicates=false] Boolean 忽略重复主键(Postgres不支持)

[options.updateOnDuplicate] Array 如果行键已存在是否更新(mysql & mariadb支持). 默认为更新

[options.transaction] Transaction 在事务中执行查询

例子const captains = await Captain.bulkCreate([

{ name: 'Jack Sparrow' },

{ name: 'Davy Jones' }

]);

console.log(captains.length); // 2

console.log(captains[0] instanceof Captain); // true

console.log(captains[0].name); // 'Jack Sparrow'

console.log(captains[0].id); // 1 // (or another auto-generated value)

插入时数据验证const Foo = sequelize.define('foo', {

bar: {

type: DataTypes.TEXT,

validate: {

len: [4, 6]

}

}

});

// 不会抛出异常,数据也会被插入

await Foo.bulkCreate([

{ name: 'abc123' },

{ name: 'name too long' }

]);

// 抛出异常,数据也不会被插入

await Foo.bulkCreate([

{ name: 'abc123' },

{ name: 'name too long' }

], { validate: true });

参考:

https://sequelize.org/master/manual/model-querying-basics.html#creating-in-bulk

修改时间 2021-01-14

真诚赞赏,手留余香

赞赏

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP