Mysql使用带有ruby的名称生成器更新数据

时间:2016-03-20 15:30:31

标签: mysql sql ruby-on-rails ruby activerecord

我们有一个13m行的表,默认情况下名称和姓氏字段为nil,当我们尝试推送一些数据时,它会在1.2m查询后停止运行。由于ram问题,我们每行循环10k行。

算法是,

$i = 0;
until $i > 13000  do
    b = Tahsil.where("NO < ?",(10000*($i+1))).offset(10000*$i)
    b.each do |a|
      a.name = Generator('name')
      a.surname = Generator('surname')
      a.save
    end

    $i += 1
end

1 个答案:

答案 0 :(得分:1)

Ruby on Rails有一些你可能想要使用的方法:

Tahsil.find_each do |tahsil|
  tahsil.update(name: Generator('name'), surname: Generator('surname'))
end

find_each批量遍历所有记录(默认批量大小为1000)。 update更新记录。