【问题标题】:Read data from other postgres database从其他 postgres 数据库中读取数据
【发布时间】:2013-06-24 21:07:24
【问题描述】:

我有一个带有 postgres 数据库的 Rails 应用程序 A。我还有另一个带有 postgres 数据库的 Rails 应用程序 B。现在我想在应用 A 中重用应用 B 的一些数据。导入这些数据的最佳方法是什么?我假设可以为此使用 rake 任务,但是您将如何做到这一点?

需要在app A的database.yml中添加app B的数据库的连接详情吗?我如何实际获取数据?

【问题讨论】:

  • 您想让它们保持同步吗?还是只是批量导入的时间连接?
  • @Denis 这几乎是一个答案;考虑这样发布。
  • 一次性批量导入部分数据

标签: ruby-on-rails-3 postgresql


【解决方案1】:

您可以通过activerecord进行手动连接

require 'active_record' 
ActiveRecord::Base.establish_connection(
  :adapter => "mysql", 
  :host => "localhost", 
  :username => "root", 
  :password => "abcd", 
  :database => "funonrails")

或者做这样的事情

dbconfig = YAML::load(File.open('database.yml')) 
ActiveRecord::Base.establish_connection( dbconfig[:students_development] )

【讨论】:

  • 这看起来很有趣,但是我如何真正向这个数据库发出请求,比如“people = People.all”?它怎么知道它应该从数据库 B 而不是从数据库 A 获取这个?
  • 您必须将数据库B地址传递给连接。实际上,我认为您需要实例化 2 个 activerecord 连接,connectionA 和 connectionB。看看这个链接:railskey.wordpress.com/2012/07/20/…它可能对你有帮助
【解决方案2】:

根据导入的实际含义,您可以使用dblink 直接查询其他数据库:

http://postgresql.org/docs/current/static/dblink.html

当 PostgreSQL 9.3 发布时,请务必查看新的外部数据包装器:

http://postgresql.org/docs/9.3/static/postgres-fdw.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2020-12-29
    • 2021-05-30
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多