Postgres将Heroku Production DB复制到本地开发DB

Lui*_*igi 34 database postgresql heroku

我有一个heroku数据库d76mj7ltuqs.

然后我有一个本地数据库test_development.

这两个数据库的模式是相同的 - 我想从生产数据库中提取所有数据并覆盖我的本地数据库,因此本地是拉动时生产的精确复制品.

我怎么能在Postgres做到这一点?

Jez*_*ezC 69

使用heroku的"pg:pull":

您需要清除本地数据库:

rake db:drop
Run Code Online (Sandbox Code Playgroud)

从Heroku收集一些信息:

heroku pg:pull DATABASE_URL test_development
Run Code Online (Sandbox Code Playgroud)

这将连接到heroku数据库,并将其复制到本地数据库.

有关详细信息,请参阅Heroku关于pg:pull的文档.

  • 现在不确定这是否是新事物,但在定义应用程序时,您需要在应用程序名称之前输入`--app`. (3认同)
  • 首先,我认为我需要用我的 heroku 配置对应的值替换 DATABASE_URL,但不是。 (3认同)
  • 同样在这里。我需要:`heroku pg:pull DATABASE_URL database_local_name --app myapp` (2认同)

mon*_*lls 5

清理您的本地数据库:

rake db:schema:load
Run Code Online (Sandbox Code Playgroud)

转储您的heroku数据库:

heroku pg:backups:capture -r <**your production git repo name**>
heroku pg:backups:download -r <**your production git repo name**>
Run Code Online (Sandbox Code Playgroud)

将数据加载到本地数据库中

pg_restore --verbose --clean --no-acl --no-owner -h localhost -d <**test database name**> latest.dump
Run Code Online (Sandbox Code Playgroud)


Ish*_*tel 5

这个命令应该做的工作:

heroku pg:pull DATABASE_URL database-name --app heroku-app-name
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 1

使用您的终端创建本地数据库pg_dump,然后将其psql添加pg_restore到本地数据库中。

类似的方法可以在这里找到。