在rails中如何在表中插入数千条记录

时间:2018-06-15 03:09:55

标签: mysql ruby-on-rails

我使用Ruby on Rails创建了API。当我调用API端点插入超过1000条记录时,它会崩溃。 目前,我正在使用数据库Mysql2

我的代码是

quantity.times do
  User.create(first_name: "John")
end

其中quantity是需要插入的记录数,可以是10000,4000000之类的任何数字。

任何人都可以建议我如何在不破坏我的服务器的情况下非常有效地执行此操作

3 个答案:

答案 0 :(得分:3)

ActiveRecord.import

items = []
quantity.times.each do |row|
  items << User.new(name: "john")
end
User.import(items)

只需查看这些benchmarks即可了解此选项的速度。而不是Model.create为其生成SQL的单独事务,提交和插入,而是在单个查询中处理它。

参考

答案 1 :(得分:0)

我建议您使用find_each 并指定batch_size来循环它。

我认为如果您循环大量的数量与示例相同,我会阻止崩溃

答案 2 :(得分:0)

尝试 gem&#39; activerecord-insert_many&#39; 。在源代码中,查找测试,您可以看到如何使用gem。

谢谢, 阿吉特