2015-04-29 8 views
6

Ho scaricato l'ultima copia del mio database Heroku conPostgres ripristinare dal file .dump: sequenza di byte non valido per la codifica "UTF-8"

$ curl -o latest.dump `heroku pg:backups public-url --app myapp` 

e questo dà un file con il seguente tipo sulla mia macchina locale :

$ file db/latest.dump 
    db/latest.dump: PostgreSQL custom database dump - v1.12-0 

Sto cercando di importarlo nel mio DB Postgres locale (my_db) utilizzando psql. Comunque, sto ricevendo un sacco di errori:

$ 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 

Il comando psql -f db/latest.dump my_db fallisce allo stesso modo.

Cosa è necessario fare per importare localmente questo file in un nuovo database con lo stesso schema, ecc.?

risposta

16

sono stato in grado di utilizzare pg_restore per risolvere il problema:

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d my_db db/latest.dump 
+3

Non credo che è possibile utilizzare il file di backup con 'psql': il Heroku“[file di backup utilizza l'opzione di formato personalizzato in ' pg_dump'] (https://devcenter.heroku.com/articles/heroku-postgres-import-export#export) "e il" [dump formato personalizzato non è uno script per 'psql', ma deve essere ripristinato con 'pg_restore'] (http://www.postgresql.org/docs/9.1/static/backup-dump.html#BACKUP-DUMP-LARGE)". – matt

+0

BTW, se tu fossi su una versione corrente di PostgreSQL, 'psql' ti avrebbe detto che stavi cercando di ripristinare un dump in formato personalizzato e dovresti usare' pg_restore'. –

+1

@CraigRinger dove lo avrebbe detto? Sto usando 9.4 e non l'ho visto. – tyler

Problemi correlati