使用heroku pg:backups:还原以导入heroku Postgres

使用heroku pg:backups:还原以导入heroku Postgres,heroku,heroku-postgres,heroku-cli,Heroku,Heroku Postgres,Heroku Cli,我正在尝试将本地PostgreSQL数据库复制到Heroku 以下是我所做的: 1.生成转储文件 2.将转储文件上载到aws my bucket name/db备份文件夹。 3.生成已签名的URL: 4.验证签名的URL是否可访问。 在浏览器的“匿名”选项卡中导航到预先签名的URL。它起作用了 5.使用生成的签名URL备份到Heroku 我在生成的URL周围使用双引号,因为我在Windows上: heroku pg:backups:restore --app my-app-name --conf

我正在尝试将本地PostgreSQL数据库复制到Heroku

以下是我所做的:

1.生成转储文件 2.将转储文件上载到aws my bucket name/db备份文件夹。 3.生成已签名的URL: 4.验证签名的URL是否可访问。 在浏览器的“匿名”选项卡中导航到预先签名的URL。它起作用了

5.使用生成的签名URL备份到Heroku 我在
生成的URL
周围使用双引号,因为我在Windows上:

heroku pg:backups:restore --app my-app-name --confirm my-app-name "GENERATED_URL"
例如:

heroku pg:backups:restore --app my-app-name --confirm my-app-name "https://s3.us-east-2.amazonaws.com/s3.console.aws.amazon.com/s3/buckets/my-bucket-name/db-backup/mydb.dump?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIABCDVKE2GXCY3YXL7V%2F20200934%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200924T164718Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fb2f51c0d7fbe1234e3740cf23c37f003575d968a1e4961684a47ac627fbae2e"
结果 我得到以下错误:

Restoring... !
 !    An error occurred and the backup did not finish.
 !
 !    Could not initialize transfer
 !
 !    Run heroku pg:backups:info r021 for more details.
'X-Amz-Credential' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Date' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Expires' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-SignedHeaders' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Signature' is not recognized as an internal or external command,
operable program or batch file.

我发现其他人也有类似的问题,但没有解决办法。提前感谢任何能提供帮助的人。

这已解决。有两个问题

  • PowerShell没有正确地转义角色。所以,我换成了CMD
  • 转储文件无效
  • 这行代码生成了无效的转储文件:

    pg_dump-Fc--无acl--无所有者-h localhost-U postgres mydb>mydb.dump

    相反,我需要使用以下语法:

    pg_dump-Fc--无acl--无所有者-h localhost-U postgres-d mydb-f mydb.dump


    在做了那个改动之后,一切都很顺利。

    值得一提的是,我也遇到了同样的问题,我的解决方案是复制S3URL,其格式为
    https://s3.amazonaws.com//.dump
    。出于某种原因,预签名URL方法不起作用,但公共URL起作用

    heroku pg:backups:restore --app my-app-name --confirm my-app-name "GENERATED_URL"
    
    heroku pg:backups:restore --app my-app-name --confirm my-app-name "https://s3.us-east-2.amazonaws.com/s3.console.aws.amazon.com/s3/buckets/my-bucket-name/db-backup/mydb.dump?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIABCDVKE2GXCY3YXL7V%2F20200934%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200924T164718Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fb2f51c0d7fbe1234e3740cf23c37f003575d968a1e4961684a47ac627fbae2e"
    
    Restoring... !
     !    An error occurred and the backup did not finish.
     !
     !    Could not initialize transfer
     !
     !    Run heroku pg:backups:info r021 for more details.
    'X-Amz-Credential' is not recognized as an internal or external command,
    operable program or batch file.
    'X-Amz-Date' is not recognized as an internal or external command,
    operable program or batch file.
    'X-Amz-Expires' is not recognized as an internal or external command,
    operable program or batch file.
    'X-Amz-SignedHeaders' is not recognized as an internal or external command,
    operable program or batch file.
    'X-Amz-Signature' is not recognized as an internal or external command,
    operable program or batch file.