在Heroku上Postgres并将单个表转储到转储文件

时间:2013-04-03 03:28:38

标签: postgresql heroku heroku-toolbelt

我在Heroku上使用Postgres,我需要从生产数据库中转储一个表并将其转储到我的暂存数据库中。我安装了heroku工具带,但不知道如何转储单个db表以导入到我的staging db中。

3 个答案:

答案 0 :(得分:63)

您可以转储单个数据表,如下所示:

$ 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:url [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:url of staging app]" < table.dump
SET
SET
...
...
...
...
$ 

答案 1 :(得分:4)

@catsbys回答

我还需要添加端口

pg_dump --no-acl --no-owner -h [host ip] .compute-1.amazonaws.com -p [port] -U [用户名] -t [表名] - 仅数据[数据库名称]&gt; table.dump

答案 2 :(得分:1)

看看点按(db:pull),我相信您的用例由this answered question涵盖。