把 SQL Server 导入 MongoDB 的 Ruby 脚本

最近想要测试一下 MongoDB 2.4 新增的 Text Search 功能,需要把以前 SQL Server 数据库中的内容导出到 MongoDB 中做测试用。虽然用 Node.js 也可以操作 SQL Server 数据库,但是微软提供的msnodesql 驱动目前(版本0.2.1)只支持 Windows,想想还是改一下以前写的 Ruby 脚本会更快些。假设你已经成功地安装了 Ruby, Rails 以及 SQL Server 和 MongoDB;剩下的主要就是安装 Ruby 需要的 SQL Server 和 MongoDB 驱动了。

# 首先安装 Rails 连接 SQL Server 所需要的驱动
gem update --system
gem install activerecord-sqlserver-adapter
 
#再安装 10gen 提供的 MongoDB 驱动:
gem install mongo
 
# 这一步会自动安装 bson,再安装 bson_ext
gem install bson_ext


实际脚本的代码就比较简单了:

require "rubygems"
require "active_record"
require "mongo"
 
include Mongo
 
# 声明一个 MongoDB client
@client = MongoClient.new('localhost', 27017)
# MongoDB db
@db = @client['your_mongo_dbname']
# MongoDB collection
@coll = @db['your_collection_name']
 
@coll.remove
 
# 连接 SQL Server 数据库的设置
ActiveRecord::Base.establish_connection(
  :adapter => "sqlserver",
  :host => "your_database_ipaddress",
  :database => "your_database_name",
  :username => "your_database_username",
  :password => "your_database_password"
)  
 
class FooBar < ActiveRecord::Base
  # 指定我们实际的表的名字
  self.table_name = "your_table_name"
end
 
# 使用 find_each 遍历我们的大数据量表
FooBar.find_each(:batch_size => 1000) do |foo|
	# 插入到 MongoDB 的 collection 中
  @coll.insert({'col1' => "#{foo.bar1}", "col2" => "#{foo.bar2}", "col3" => "#{foo.bar3}"});
end


参考:

  • http://docs.mongodb.org/ecosystem/drivers/ruby/
  • Ruby Driver Tutorial: http://api.mongodb.org/ruby/current/

鉴于 Ruby 的元编程特性和 MongoDB 的灵活性,是不是可以做一个通用的转换程序?有时间可以试着写一个。

本文地址:http://www.tfan.org/from-sqlserver-to-mongodb-using-ruby-and-rails

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值