GORM bulk insert

f:id:pigggg:20210815130708p:plain  

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)