【问题标题】:Postgresql: How to perform cross db queriesPostgresql:如何执行跨数据库查询
【发布时间】:2014-11-29 02:54:40
【问题描述】:

我目前有 2 个相同的模式数据库(1 个用于暂存,1 个用于生产)。我遇到的一个问题是不小心将登台与真实的生产数据一起使用,我根本无法在浏览器上手动输入它,因为我需要传输一百多个数据,并且增量转储不起作用,因为它会导致与存在的唯一 ID。

我的一个想法是做类似的事情

插入帖子值(从 staging_db 中选择 *);

但从我所见,psql 8.4.13 与 mysql 相比似乎不支持此功能。有没有其他方法可以转帐?

我也在 rails 3 上做应用程序,如果 psql 出来了,那么也许一些 rails 方式可以做到这一点?

【问题讨论】:

  • 只取源数据库的dump,然后到目标应用,启动postgressql控制台,运行源数据库的dump到目标应用数据库。
  • 您可以使用postgresql.org/docs/9.3/interactive/postgres-fdw.html,但您需要 postgresql 9.3。顺便说一句,您应该考虑升级,因为不再维护 8.4。

标签: ruby-on-rails ruby-on-rails-3 postgresql psql rails-postgresql


【解决方案1】:

COPY 将数据输出到文件,然后再返回。

假设您使用的是psql 客户端:

\c staging_db
\copy (select col1, col2, col3 from the_table where ....) to 'newvalues.csv'
\c production_db
\copy the_table(col1, col2, col3) from 'newvalues.csv'

注意,column-list 应该省略生成的 ID 列,以便\copy ... from ... 将强制生成新的 ID。

如果您的新数据不止一个表,这将不起作用;你必须编写一个脚本/工具来提取它并重新插入它。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多