遗留数据处理

发布测试版本,需要导入遗留的数据,刚开始,直接新建两个connection,一个是旧的数据库sqlserver,一个是新的数据库mysql,但是在保存mysql数据的时候:报无法找到sqlserver的表,原来数据在获取的时候才去取sqlserver的数据,并没有完全取出来。于是乎想到前两天网上看到的Magic Multi Connection:http://magicmodels.rubyforge.org/magic_multi_connections/

安装试用一下:
[code]gem install magic_multi_connections[/code]


代码只是做了稍微的改动,就可以用了。
[code]
require 'rubygems'
require_gem 'activerecord'
require_gem 'magic_multi_connections'

ActiveRecord::Base.establish_connection(:adapter=>'sqlserver',:host=>'localhost',:database=>'hbpcvs',:username=>'sa')

class Member < ActiveRecord::Base
self.table_name = "t_rm_vip_info"
self.primary_key = "card_flowno"
end

class MemberScore < ActiveRecord::Base
self.table_name="t_memtotalscore"
self.primary_key="membercode"
end

scores = {}
MemberScore.find(:all).each{|ms| scores[ms.membercode]=ms.remainderscore}

print "Fetch member's amount:",members.size,"\n"

class UserInfo < ActiveRecord::Base establish_connection(:adapter=>'mysql',:host=>'localhost',:database=>'romh',:username=>'root')
end

Member.find(:all).each do |m|
u = UserInfo.new
m.attribute_names.each{|ar| u.send("#{ar}=",m.send("#{ar}"))if u.attribute_present?(ar)}
u.card_no = m.id
#其他的属性
#...
#额外另一张表用户的积分
u.socres=scores[m.id].nil? ? 0:scores[m.id]
u.save!
end
[/code]

:)成功。


但是唯一可惜的是效率的问题,一万多条数据跑了好几分钟:(有空再考虑优化,现在得继续忙着干活去.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值