データベースに一気にデータを投入するBulkInsertの処理について調べてみました。
テーブル構成
下記のようなUsersテーブルを作成します。
カラム名 | type |
---|---|
id | int(11) |
name | varchar(255) |
createdAt | datetime |
updatedAt | datetime |
BulkInsert
SequelizeでBulkInsertはbulkCreateというメソッドのようです。
'use strict';
const db = require('./models/index')
db.User
.bulkCreate([{
name: "羽生"
},{
name: "村山"
},{
name: "佐藤"
},{
name: "先崎"
},{
name: "丸山"
},{
name: "藤井"
},{
name: "森内"
},{
name: "郷田"
}])
.then(()=>{
db.sequelize.close()
})
SQL
INSERT INTO `Users` (`id`,`name`,`createdAt`,`updatedAt`) VALUES (NULL,'羽生','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'村山','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'佐藤','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'先崎','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'丸山','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'藤井','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'森内','2019-03-24 16:53:26','2019-03-24 16:53:26'),(NULL,'郷田','2019-03-24 16:53:26','2019-03-24 16:53:26');
実行後データ
id | name | createdAt | updatedAt |
---|---|---|---|
1 | 羽生 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
2 | 村山 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
3 | 佐藤 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
4 | 先崎 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
5 | 丸山 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
6 | 藤井 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
7 | 森内 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
8 | 郷田 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
一気に削除
BulkInsertで入れたデータのid1〜5を一気に削除してみます。
'use strict';
const db = require('./models/index')
db.User
.destroy({
where: {
id: [1,2,3,4,5]
}
})
.then(()=>{
db.sequelize.close()
})
SQL
DELETE FROM `Users` WHERE `id` IN (1, 2, 3, 4, 5)
実行後データ
id | name | createdAt | updatedAt |
---|---|---|---|
6 | 藤井 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
7 | 森内 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |
8 | 郷田 | 2019-03-24 16:53:26 | 2019-03-24 16:53:26 |