从Heroku生产数据库导出单个表

时间:2016-02-16 22:21:11

标签: ruby-on-rails database postgresql heroku

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

有办法吗?

  1. 快点这样做?
  2. 在不影响生产数据库性能的情况下这样做吗?
  3. 如果没有,最好的方法是什么?

1 个答案:

答案 0 :(得分: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 Connection URL:输出用于暂存应用的新pg:credentials ,并仅恢复该表。

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

请查看https://stackoverflow.com/a/16151503/1380867了解详情 并感谢catsby提供的出色答案