8

我有一个运行在 Heroku 上的 java 应用程序和 postgresql 数据库。我可以很好地推送我的应用程序,但是数据库内容呢?我已经从数据库中导出了一个完整的转储,但我不知道如何导入它。

通过谷歌搜索,您可以找到关于db:push的信息,这是一个有限的 ruby​​gem,而不是推送所有需要的东西。我有序列、bigint 数据类型等。我还尝试使用heroku pg:psql --app MYAPP < db_all.outwhich just connect 和 stop 导入,并尝试heroku pg:psql --app MYAPP发出\i db_all.out有关权限的投诉。

我该怎么做?

4

3 回答 3

13

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

于 2012-08-09T21:23:29.440 回答
3

为了帮助仍然偶然发现这个问题的其他人,对我有用的是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
    
  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. 然后它应该成功导入转储
于 2021-01-22T13:07:32.187 回答
0

这很简单,对我有用:

heroku pg:psql -a {YOUR_APP} -f {YOUR_DUMP_PATH}

我发现这是使用标准输入语法(如在 OP 示例中)更好的方法,因为它使用 Heroku 命令本身给出的选项。

您可能想在提交之前检查您的转储文件是否正常(在我的情况下不是)。

于 2022-02-21T13:05:10.307 回答