如何获得常规文本数据库转储 postgres 在 heroku?

由于我的数据库版本的不兼容 postgres 在 heroku /9.1/ 和我的本地安装 /8.4/ 我需要一个常规的文本文件数据库转储文件 sql, 这样我就可以将我的生产数据副本放入本地测试环境中。

似乎是 heroku 我不能倾倒 pg_dump, 但我只能做到这一点:


$ heroku pgbackups:capture
$ curl -o my_dump_file.dump `heroku pgbackups:url`


......它给了我 "custom database dump format", 但不是 "plain text format", 所以我做不到:


$ psql -d my_local_database -f my_dump_file.sql
已邀请:

冰洋

赞同来自:

你可以自己制作 pg_dump 直接来自您的数据库 Heroku.

首先,获得一个字符串 postgres 通过
heroku config:get DATABASE_URL

.

找 Heroku Postgres url /例子:
HEROKU_POSTGRESQL_RED_URL: postgres://user3123:passkja83kd8@ec2-117-21-174-214.compute-1.amazonaws.com:6212/db982398

/, 它的格式是相等的
postgres://<username>:<password>@<host_name>:<port>/<dbname>

.

然后在命令行上运行它:


pg_dump --host=<host_name> --port=<port> --username=<username> --password --dbname=<dbname> &gt; output.sql


terminal 请求您的密码,然后启动它并将其丢弃 output.sql.

然后导入它:


psql -d my_local_database -f output.sql


</dbname></username></port></host_name></dbname></port></host_name></password></username>

裸奔

赞同来自:

Heroku PGBackups 在这一点
https://devcenter.heroku.com/a ... xport
, 和 "custom format" 实际上是
http://www.postgresql.org/docs ... .html
, 不要对自己的用户格式 Heroku.

这意味着您可以使用
pg_restore

, 这是一部分 Postgres, 直接恢复备份 Heroku 到另一个数据库:


pg_restore -d mydatabase my_dump_file.dump


除了,
http://www.postgresql.org/docs ... .html
, 所以你可以备份备份 Heroku 到文件。 SQL 因此:


pg_restore my_dump_file.dump > sql_statements.sql

郭文康

赞同来自:

假设你有什么
DATABASE_URL

, 仅限于您的环境中,有一种更简单的方法:


heroku run 'pg_dump $DATABASE_URL' > my_database.sql


它将导致发射
pg_dump

在您的容器中和将内容传输到本地文件
my_database.sql

.

单引号非常重要。

如果使用双引号 /或者根本不使用引号/,
DATABASE_URL

将在本地评估,而不是在您的容器中。

如果您的整个目标是在任何情况下在本地数据库中加载内容,您也可以在那里传递它:


createdb myapp_devel # start with an empty database
heroku run 'pg_dump -xO $DATABASE_URL' | psql myapp_devel


添加
-xO

避免重置运算符
GRANT

,
REVOKE


ALTER OWNER

, 这可能不适用于您的本地数据库服务器。 如果你的任何球队
COPY

结束错误
ERROR: literal carriage return found in data

/我的/, 看

.

当最初问这个问题时,它可能没有工作两年半前,而是对于那些正在寻找换乘数据库的方法的人来说 Heroku Postgres, 今天做到这一点似乎是最简单的方法。

裸奔

赞同来自:

对于像我这样的人,谁会面临这个问题 2020 年:


heroku pg:backups:capture -a app-name
heroku pg:backups:download -a app-name


该工具实际上将说明捕获后使用的命令。 获得 SQL 来自您的文件
latest.dump

:


pg_restore -f sqldump.sql latest.dump


一切都是。

董宝中

赞同来自:

Heroku pg:backups:capture
Heroku pg:backups:download


取自
https://devcenter.heroku.com/a ... xport
.
现在你有一个二进制文件。 要以通常的文本格式获取文件,请为我完成以下操作。 注意:您需要安装 PostgreSQL.


pg_restore latest.dump > latest.sql

要回复问题请先登录注册