2015-04-29 15 views
6

Pobrałem najnowszą kopię mojej bazy danych Heroku zPostgres przywrócić z .dump pliku: nieprawidłowy sekwencji bajtów do kodowania „UTF8”

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

a to daje plik z następującego typu na moim komputerze lokalnym :

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

Próbuję zaimportować to do mojego lokalnego Postgres DB (my_db) za pomocą psql. Jednak otrzymuję wiele błędów:

$ 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 

Komenda psql -f db/latest.dump my_db nie działa w ten sam sposób.

Co należy zrobić, aby zaimportować ten plik lokalnie do nowej bazy danych o tym samym schemacie itp.?

Odpowiedz

16

byłem w stanie wykorzystać pg_restore do rozwiązania problemu:

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

Nie sądzę, można użyć pliku kopii zapasowej z 'psql': the Heroku„[plik kopii zapasowej wykorzystuje opcję formatu niestandardowego w ' pg_dump'] (https://devcenter.heroku.com/articles/heroku-postgres-import-export#export) ", a" [zrzut niestandardowego formatu nie jest skryptem dla 'psql', ale zamiast tego musi zostać przywrócony z 'pg_restore'] (http://www.postgresql.org/docs/9.1/static/backup-dump.html#BACKUP-DUMP-LARGE)". – matt

+0

BTW, jeśli byłeś na aktualnej wersji PostgreSQL, 'psql' powiedziałby ci, że próbujesz przywrócić zrzut w formacie niestandardowym i powinien użyć' pg_restore'. –

+1

@CraigRinger, gdzie by to powiedział? Używam 9.4 i nie widziałem tego. – tyler

Powiązane problemy