G

[Golang] GORM框架 CreateInBatches(批量插入)

RoLingG 2024-10-10

CreateInBatches(批量插入)

GORM 的 CreateInBatches 方法用于批量创建记录。当你有大量记录需要插入数据库时,这个方法可以有效地将这些记录分成多个批次进行插入,每个批次包含指定数量的记录。这样做可以减少数据库的插入操作次数,提高插入效率。

CreateInBatches 的作用:

  1. 批量插入:将记录分批插入数据库,每批可以自定义大小。
  2. 事务支持:即使在分批插入的过程中,所有批次的插入操作都在同一个事务中执行,确保数据的一致性。
  3. 回填主键:在批量插入后,GORM 会回填生成的主键到对应的模型实例中。

使用示例:

var users []User
// 假设这里有代码填充 users 切片

// 使用 CreateInBatches 批量插入,每批 100 条记录
result := db.CreateInBatches(&users, 100)

在这个例子中,users 切片包含了要插入的数据,db.CreateInBatches 方法将这些数据分批插入数据库,每批包含 100 条记录。result 将包含批量操作的结果,包括受影响的行数和可能的错误。

注意事项:

  • 批次大小:批次大小可以根据实际需求和数据库性能进行调整。
  • 事务:虽然 CreateInBatches 会将操作分批执行,但所有操作都在同一个事务中,要么全部成功,要么全部失败。
  • 主键回填:GORM 会在批量插入后回填主键,所以可以在插入后访问新创建记录的 ID。

这个方法适用于需要插入大量数据的场景,例如初始化数据库时填充数据或者批量导入数据。使用 CreateInBatches 可以显著提高数据插入的性能和效率。

总结

综上,一般来说像 CreateInBatches 这种大批量插入数据的都会和 Session 一起,通过业务将批量操作要么一次性全部成功,要么全部失败,保证数据的正确性与稳定性。

PREV
[Golang] GORM框架 钩子
NEXT
[Golang] GORM框架 事务

评论(0)

发布评论