0

Ruby noob alert:在 ruby​​ 中插入 300,000 条记录需要 8 小时。它非常缓慢。如何改进以下代码?下面,对于从连接对象中获取的每一行,我都在进行活动记录保存。我已经得出结论,这是导致大部分缓慢的原因。如何更改我的代码以使插入速度更快?

class SiteSection < ActiveRecord::Base

  SiteSection.establish_connection(
        :adapter  => 'postgresql',
        :host     => 'hoster-of-hosts.com',
        :database => 'super-inven',
        :username => 'user',
        :password => 'pass'
                      )
  self.table_name = 'master.target_tbl'  # << insert into this table
end

conn.query("select * from source_tbl") do |row|
  siteData = SiteSection.find_or_initialize_by_head_date_and_center_id_and_site_url(row[:date_c], row[:com_id], row[:site_link])

  siteData[:head_date]      = row[:date_c]
  siteData[:center_id]     = row[:com_id]
  siteData[:site_url]          = row[:site_link]
  siteData[:people_cnt]      = row[:persons]
  siteData[:ips]     = row[:ip_adds]

  siteData.save  # For every record from source_tbl query, save it in master.target_tbl.
i = i+1
puts "finished: #{i}" if i % 10000 == 0
end
conn.close

谢谢!

4

0 回答 0