GORM bulk insert
GORM
- golang の ORM
- 直感的に扱えはするので◯
gorm.io
GORM で bulk insert
これ
gorm.io大量のレコードを効率的に挿入するには、Createメソッドにスライスを渡します。 GORMはすべてのデータを挿入し、主キーの値をバックフィルするための単一のSQL文を生成し、フックメソッドも起動されます。
GORMのCreateメソッドは insert に該当するのですが、そこに Slice を入れるだけで勝手にBulkになるのはありがたい。
var users = []User{{Name: "jinzhu1"}, {Name: "jinzhu2"}, {Name: "jinzhu3"}} db.Create(&users) for _, user := range users { user.ID // 1,2,3 }
CreateInBatches
というのもあり。
実行するサイズを指定して insert ができるっぽい。
大量データを扱うときは必要になるかも。ちゃんと用意されててすごい。
var users = []User{{Name: "jinzhu_1"}, ...., {Name: "jinzhu_10000"}} // batch size 100 db.CreateInBatches(users, 100)