将postgresql转储导入Heroku

时间:2012-08-09 18:54:33

标签: postgresql heroku

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

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

我该怎么做?

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:2)

为了帮助仍然遇到此问题的其他人,对我有用的是 hgmnz's answer,但做了一些修改。

更准确地说:

  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
    
  2. 获取您的 heroku 应用程序的 Heroku Postgres 凭据
    $ heroku pg:credentials:url -a YOUR_APP_NAME
    
  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
    
  4. 输入从 Heroku Postgres 凭据收到的密码
  5. 然后它应该成功导入转储