将postgresql转储导入Heroku

eis*_*eis 6 postgresql heroku

我有一个java应用程序和postgresql数据库,以便在Heroku上运行它.我可以推送我的应用程序,但DB内容怎么样?我从数据库导出了一个完整的转储,但我不知道如何导入它.

通过谷歌搜索,你可以找到关于db:push这是一个有限的rubygem,而不是推动所需的所有东西.我有序列,bigint数据类型等.我也尝试导入使用heroku pg:psql --app MYAPP < db_all.out它只是连接和停止,并转到heroku pg:psql --app MYAPP并发出\i db_all.out有关权限的投诉.

我该怎么办?

hgm*_*mnz 13

您可以pg_restore使用由其提供的凭据从本地计算机运行该命令heroku pg:credentials HEROKU_POSTGRESQL_<COLOR>.

  • 谢谢!在实践中,这是需要的命令:`pg_restore --verbose --clean --no-acl --no-owner -h <HOSTNAME> -U <USER> -d <DATABASE> -p <PORT> < FILEPATH>密码= <通过>` (5认同)
  • 在Postgres 9.4中,我发现我需要:`PGPASSWORD = <PASS> pg_restore --verbose --clean --no-acl --no-owner -h <HOSTNAME> -U <USER> -d <DATABASE> -p < PORT> <FILEPATH>` (5认同)

Zai*_*lan 5

为了帮助仍然偶然发现这个问题的其他人,对我有用的是hgmnz 的答案,但进行了一些修改。

更准确地说:

  1. 从源 PostgreSQL 数据库创建转储
    $ PGPASSWORD=YOUR_PG_PASSWORD pg_dump -Fc --no-acl --no-owner -h localhost -U YOUR_PG_USER YOUR_DB_NAME > YOUR_DB_NAME.dump
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取 Heroku 应用程序的 Heroku Postgres 凭据
    $ heroku pg:credentials:url -a YOUR_APP_NAME
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试使用上面的凭据将 PostgreSQL 转储导入到 Heroku
    $ pg_restore --verbose --clean --no-acl --no-owner -h HOSTNAME -U USER -d DATABASE -p PORT PATH/TO/YOUR_DB_NAME.dump --password
    
    Run Code Online (Sandbox Code Playgroud)
  4. 输入从 Heroku Postgres 凭证收到的密码
  5. 然后应该成功导入转储