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