从 Heroku 下载 PG 数据库文件

Download PG database as a file from Heroku

我正在尝试下载暂存数据库的文件(副本)。我在 these docs.

之后使用 pgbackups

我创建了一个备份,然后使用 heroku pgbackups:url b462 --app staging-appname 获得了 public-url,这很有效。

比我运行命令curl -o latest.dumpheroku pg:backups <public-url> b462 -a staging-appname得到curl:没有URL指定!

它说 <public-url> 我已经复制了实际的长 public-url,如 https://s3.amazonaws.com/reallly-long-url-with-acess-key-ect.

我在这里错过了什么?

尝试以下操作以在 运行 heroku pgbackups:capture --app=staging-appname 之后立即获取最新文件:

curl -o latest.dump `heroku pgbackups:url --app=staging-appname`

只有在查找特定的旧文件时才需要 b..

以下将创建备份:

heroku pg:backups capture --app name-of-the-app

使用终端打印的如下信息

---backup---> b001

在下面的命令中

heroku pg:backups public-url b001 -a name-of-the-app

会给你url转储

我也在为 this doc 苦苦挣扎,Prakash 的建议对我没有用(错误抱怨无法解决 'heroku' 这不是 [=29= 的一部分) ], 所以语法似乎很糟糕,至少对于我正在使用的 pg 或 pgbackup gem 版本来说是这样。)

我也按照 heroku 文档中的建议尝试了 wget,但无济于事。

当我感到困惑时,我会尝试将其分解为最简单的元素,这使我找到了一个比文档提供的解决方案简单得多的解决方案...

我使用 Rafael 的回答中的命令生成一个临时 URL 来检索转储文件:

heroku pg:backups public-url b001 -a name-of-the-app

然后,我没有将生成的 URL 插入 curl 命令,我只是将 URL 粘贴到 Chrome 的地址栏并下载了文件使用我的网络浏览器。

下载成功,db文件有效。

再多说一点,这里是一个 shell 脚本示例,用于从 heroku 下载 mysql 转储并将其恢复为本地数据库

backup_name=

if [ -z "$backup_name" ]
  then
    echo "You must supplied heroku backup name (ex: b001)"
    return
fi

echo "Loading '$backup_name' database from heroku"

heroku pg:backups public-url $backup_name -a your-app-name > last_url.txt
curl -o latest.dump `cat last_url.txt`
dropdb local-db-name
createdb local-db-name
pg_restore -c -d local-db-name latest.dump

您需要输入 heroku 备份名称。