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

den*_*icz 29 postgresql heroku heroku-toolbelt

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

cat*_*sby 65

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

$ 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
Run Code Online (Sandbox Code Playgroud)

您可以获得所需的所有值:

$ 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]
Run Code Online (Sandbox Code Playgroud)

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

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

$ echo "truncate [table];" | heroku pg:psql [DATABASE] -a staging_app
Run Code Online (Sandbox Code Playgroud)

使用该文件,您可以使用新调用psqlConnection URL:输出pg:credentials登台应用程序并仅恢复该表.

$ psql "[pasted postgres:// from pg:credentials:url of staging app]" < table.dump
SET
SET
...
...
...
...
$ 
Run Code Online (Sandbox Code Playgroud)

  • 如果需要多个表,请为每个表添加-t开关.所以,`pg_dump --no-acl --no-owner -h [host ip] .compute-1.amazonaws.com -U [用户名] -t [表名1] -t [表名2] -t [表名3] - 仅数据[数据库名称]> table.dump` (7认同)
  • 这非常有效,谢谢.对于执行此操作的其他人:完成上述步骤后,不要忘记重置PG主键序列,以便它知道要从哪个主键开始.http://stackoverflow.com/questions/244243/how-to-reset-postgres-primary-key-sequence-when-it-falls-out-of-sync (2认同)