【问题标题】:How can I import a .sql file into my Heroku postgres database?如何将 .sql 文件导入 Heroku postgres 数据库?
【发布时间】:2013-12-28 19:43:08
【问题描述】:

我有一个来自另一个数据库的备份 sql 文件,我想将它导入 Heroku 的 postgres 数据库。你是怎么做到的?

【问题讨论】:

标签: database postgresql heroku import


【解决方案1】:

您必须在此命令中添加运行。它会成功的!

heroku pg:psql run --app YOUR_APP_NAME_HERE < updates.sql

【讨论】:

    【解决方案2】:

    这就是你的做法:

    heroku pg:psql --app YOUR_APP_NAME_HERE < updates.sql
    

    如果你想将你的产品恢复到暂存状态(假设两者都是 heroku postgres 数据库):

    heroku pgbackups:restore YOUR_STAGING_DATABASE_NAME `heroku pgbackups:url --app YOUR_PRODUCTION_APP_NAME` --app YOUR_STAGING_APP_NAME --confirm YOUR_STAGING_APP_NAME
    

    确保保留 heroku pgbackups:url --app YOUR_PRODUCTION_APP_NAME 周围的特殊单引号。


    HEROKU 工具带更新

    Heroku 最近更新了他们的工具带,因此旧命令不再有效(有关更多信息,请参阅 this link)。以下是新版本的恢复命令。

    heroku pg:backups restore \
      `heroku pg:backups public-url -a YOUR_PRODUCTION_APP_NAME` \
      YOUR_STAGING_DATABASE_NAME \
      --app YOUR_STAGING_APP_NAME \
      --confirm YOUR_STAGING_APP_NAME
    

    【讨论】:

    • 在第一个示例中,如果您在应用程序上有多个数据库,您可以通过将heroku pg:psql HEROKU_POSTGRESQL_GREEN_URL --app YOUR_APP_NAME_HERE &lt; updates.sql 指定为非默认(不使用DATABASE_URL)作为例子。当然,用你自己的 db URL 环境变量代替我在这个例子中放的那个。
    • 谢谢。它是一个真正的救星
    • 确保您已经在 Heroku 上为您要克隆的数据库创建了备份!
    • 这是否还需要上传到 S3 或某个本地存储库?如何将本地 sql 转储加载到 heroku postgres 数据库?
    • 对我来说,heroku pg:psql --app APP_NAME
    【解决方案3】:

    Windows 上 Heroku 上的 Django 本地数据库导入

    创建备份

    pg_dump -U postgres -d hawkishfinance > C:\Users\Fauzan\Projects\hawkishfinance.sql
    

    转储到服务器

    heroku pg:psql --app hawkishfinance < hawkishfinance.sql 
    

    【讨论】:

      【解决方案4】:

      制作备份文件:

      pg_dump -U USERNAME DATABASE --no-owner --no-acl -f backup.sql 
      

      从 sql 文件恢复到 heroku:

      heroku pg:psql --app APPNAME < backup.sql 
      

      (奖励)从 Heroku 应用程序数据库中删除所有表(示例):

      heroku pg:reset --app APPNAME HEROKU_POSTGRESQL_ROSE
      

      从 posgresql heroku 面板(psql 行)获取 DATABASE_URL

      【讨论】:

      • 谢谢!我看到的其他所有地方都表明我必须上传到 S3。
      • ---> 连接到 DATABASE_URL 输入是 PostgreSQL 自定义格式转储。使用 pg_restore 命令行客户端将此转储恢复到数据库。
      • 我必须使用以下命令:pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
      • Abel,这是备份数据库的首选方法吗?有什么限制?
      【解决方案5】:

      将 SQL 加载到本地 Postgres 实例中并确保其正确。然后使用此处的说明转储数据:https://devcenter.heroku.com/articles/heroku-postgres-import-export

      最后,将转储上传到公共网络服务器(如 S3)并恢复到 Heroku,如下所示:

      heroku pgbackups:restore DATABASE 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump'
      

      【讨论】:

      • 有没有办法在没有本地数据库的情况下做到这一点?我有一个带有 sql 语句的 .sql 文件。它具有所有 CREATE TABLES 和插入数据。我只需要一种方法将该 SQL 发送到 Heroku 上的 Postgres。
      • 是的,您可以使用 PgAdmin 远程连接到您的 Heroku 数据库并将您的 SQL 代码粘贴到其中。但是,我强烈建议您也设置一个本地数据库,以便您可以遵循 12 因素原则并能够在本地进行调试:12factor.net
      • @Jeff - 查看我的回答,您不需要本地数据库或连接 PgAdmin,您可以通过命令行轻松完成。
      猜你喜欢
      • 2020-11-07
      • 2022-11-21
      • 1970-01-01
      • 2011-09-26
      • 2012-01-10
      • 2017-01-23
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多