mysql - 在 rails 中向 mysql 插入 100000 多条记录的最快方法

标签 mysql ruby-on-rails ruby redis

我想将信息从redis 传输到mysql。

一开始是从redis中获取user_id和score。

info = $redis.zrevrange("some_info", 0, limit - 1, withscores: withscores)

然后我需要处理这些日期:

  total_info = info.each_slice(2).to_a.inject([]) do |sum, e|
    sum << {
            id: id,
            name: name,
            rank: rank,
            score: score,
           }

total_info 是一个大小为 100000+ 的数组。

然后我需要将total_info的记录插入到mysql中。

我尝试创建一个循环来插入,但我认为这不是一个好主意。

如何制作?最快的方法是什么?

最佳答案

您可以使用 Active Record Import在他的 Fastest Version .

这是一个例子:

columns = [ :id, :name, :rank, :score ]
values = []
infos.each do |info|
  values << [info.id, info.name, info.rank, info.score]
end
Model.import columns, values, validate: false

关于mysql - 在 rails 中向 mysql 插入 100000 多条记录的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296811/

相关文章:

mysql - 对结果表进行 SQL 查询

ruby - 如何描述 Rails 3 迁移中的枚举列?

ruby - 遏制 + Mechanize = 段错误?

ruby-on-rails - 如何进行迁移以更新表 RAILS

mysql - Zebra 数据库 MySQL 包装器是否可以防止 SQL 注入(inject)?

php - MySQL 将数据插入数据库时​​影响行 -1

mysql - 有没有办法在 JOIN 部分的 SELECT FROM (查询)语法中重用子查询?

ruby-on-rails - Rails User-Profile 模型挑战

ruby-on-rails - 将实例变量从设计 Controller 传递到自定义邮件程序?

ruby-on-rails - 在 Rails 中进行 cometd /长轮询的最佳方法是什么?