Postgres从.dump文件恢复:用于编码"UTF8"的无效字节序列

Tyl*_*ler 6 postgresql heroku psql

我已经下载了我的heroku数据库的最新副本

$ curl -o latest.dump `heroku pg:backups public-url --app myapp`
Run Code Online (Sandbox Code Playgroud)

这会在我的本地计算机上提供以下类型的文件:

$ file db/latest.dump
    db/latest.dump: PostgreSQL custom database dump - v1.12-0
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用psql将其导入到我的本地Postgres DB(my_db)中.但是,我遇到了很多错误:

$ psql my_db < db/latest.dump
    ...
    psql:db/latest.dump:119425: invalid command \?A~???b?{#?+????LS??
    psql:db/latest.dump:119426: invalid command \D%!?/F??g????A???dC????|2?M?$?8GTJ??c?E?;???Sh??S?[NP?f?2?+H?W????k
    ... [thousands of lines]
    psql:db/latest.dump:261719: ERROR:  invalid byte sequence for encoding "UTF8": 0xba
Run Code Online (Sandbox Code Playgroud)

该命令psql -f db/latest.dump my_db以同样的方式失败.

为了将本地文件导入到具有相同模式的新数据库等,需要做些什么?

Tyl*_*ler 17

我能够用来pg_restore解决问题:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d my_db db/latest.dump 
Run Code Online (Sandbox Code Playgroud)

  • 我不认为你可以使用`psql`备份文件:Heroku"[备份文件使用`pg_dump`中的自定义格式选项](https://devcenter.heroku.com/articles/heroku-postgres-import -export #export)"和"[自定义格式转储不是`psql`的脚本,而是必须使用`pg_restore`恢复](http://www.postgresql.org/docs/9.1/static /backup-dump.html#BACKUP-DUMP-LARGE)". (3认同)
  • 非常感谢,这个命令非常有帮助. (3认同)