我已经使用以下命令下载了最新的Heroku数据库副本:
$ curl -o latest.dump `heroku pg:backups public-url --app myapp`
这将在我的本地机器上生成以下类型的文件:
$ file db/latest.dump
db/latest.dump: PostgreSQL custom database dump - v1.12-0
我正在尝试使用psql将此内容导入到我的本地Postgres数据库(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
使用命令psql -f db/latest.dump my_db
时会失败。
为了将此文件本地导入具有相同模式等的新数据库,需要执行什么操作?
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)”。 - mattpsql
会告诉您正在尝试恢复自定义格式的转储文件,并应该使用pg_restore
。 - Craig Ringerpsql -f dumpfile
有效。我认为这个补丁已经被合并到9.4版本中了... - Craig Ringer