如何将 .sql 文件导入 Heroku postgres 数据库?

Posted

技术标签:

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

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

【问题讨论】:

此解决方案也适用于某些人:***.com/questions/42433414/… 【参考方案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,您可以通过命令行轻松完成。

以上是关于如何将 .sql 文件导入 Heroku postgres 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Heroku 上导入芹菜

使用 heroku pg:backups:restore 导入 Heroku Postgres

将 POST 请求从本地主机发送到 heroku 服务器?

将 Django 开发数据库 (.sql3) 迁移到 Heroku

如何轻松将多个 sql 文件导入 MySQL 数据库?

无法将本地 Postgres 数据库推送到 Heroku