如何将 .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 < 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 pg:backups:restore 导入 Heroku Postgres