在 Rails 控制台中的数据库之间复制

Chr*_*fer 4 database ruby-on-rails rails-console

我有三个数据库:

  • A.mynewapp_psql (Postgres)
  • B.old_products_psql (Postgres)
  • C.old_blogposts_mysql(Mysql)

每个都定义在database.yml

我使用A( mynewapp_psql) 作为我的新应用程序的数据库。在此应用程序中,我希望能够从两个旧数据库中复制选定的材料。

我的尝试(根据回复更新)

old_db = ActiveRecord::Base.establish_connection(:database => 'old_blogposts_mysql'... etc)
posts = old_db.connection.execute("select * from posts'")
posts.each do |p|
  NewPost.create(:name => p.name.downcase) #NewPost should add Post in A. (mynewapp_psql)
end
Run Code Online (Sandbox Code Playgroud)

它应该从我的旧数据库中获取每个产品,并在新数据库中创建一个新的等效产品。

我真的更喜欢通过控制台来完成此操作,并且我无法直接复制数据库,因为我需要过滤和更改数据。

the*_*eba 5

所以你的情况是失去联系之一。如何建立与当前数据库的新连接,以便您的代码变得像这样

old_db = ActiveRecord::Base.establish_connection(:database => 'old_blogposts_mysql'... etc)
posts = old_db.connection.execute("select * from posts'")
new_db = ActiveRecord::Base.establish_connection(:database => 'mynewapp_psql'... etc)
posts.each do |p|
  NewPost.create(:name => p.name.downcase) #NewPost should add Post in A. (mynewapp_psql)
end
Run Code Online (Sandbox Code Playgroud)