我们的Rails 4应用程序的生产数据库相当大,下载需要一段时间。我想抓住一些表,例如用户和地址,而不必花时间从Heroku(https://devcenter.heroku.com/articles/heroku-postgres-import-export)下载生产数据库,然后将表数据导入本地和/或分段用于测试的数据库。
有办法吗?
如果没有,最好的方法是什么?
答案 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提供的出色答案