【问题标题】:Exporting individual tables from a Heroku production database从 Heroku 生产数据库中导出单个表
【发布时间】:2016-05-28 09:59:12
【问题描述】:

我们的 Rails 4 应用程序的生产数据库相当大,下载需要一些时间。我想获取几个表,例如用户和地址,而不必花时间从 Heroku (https://devcenter.heroku.com/articles/heroku-postgres-import-export) 下载生产数据库,然后将表数据导入本地和/或暂存数据库进行测试。

有没有办法:

  1. 快速执行此操作?
  2. 这样做不会影响生产数据库的性能?

如果没有,最好的方法是什么?

【问题讨论】:

    标签: ruby-on-rails database postgresql heroku


    【解决方案1】:

    我会去获得一张桌子的方式是这样的:

    $ pg_dump --no-acl --no-owner -h [host ip].compute-1.amazonaws.com -U [user name] -t [table name] --data-only [database name] > table.dump
    

    你可以得到所有需要的值:

    $ heroku pg:credentials [DATABASE] -a [app_name]
    Connection info string:
       "dbname=[database name] host=[host ip].compute-1.amazonaws.com port=5432 user=[user name] password=[password] sslmode=require"
    Connection URL:
        postgres://[username]:[password]@[host ip].compute-1.amazonaws.com:5432/[database name]
    

    这将提示您输入密码。输入它,然后您应该继续在本地驱动器上获取文件table.dump

    您可能希望在暂存时截断表格:

    $ echo "truncate [table];" | heroku pg:psql [DATABASE] -a staging_app
    

    使用该文件,您可以将psql对暂存应用程序的pg:credentials 的新调用Connection URL: 输出结合使用,并仅恢复该表。

    $ psql "[pasted postgres:// from pg:credentials of staging app]" < table.dump
    SET
    SET
    ...
    ...
    ...
    ...
    $ 
    

    请查看https://stackoverflow.com/a/16151503/1380867 了解更多信息 感谢catsby 的出色回答

    【讨论】:

    • 我可以把它放在一个 bash 脚本中以便在我的本地机器上运行吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多