2015-04-29 33 views
6

Tôi đã tải bản mới nhất của cơ sở dữ liệu Heroku tôi vớiPostgres khôi phục từ file .dump: chuỗi byte không hợp lệ cho mã hóa "UTF8"

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

Và điều này mang lại một tập tin với các loại vật liệu làm trên máy tính địa phương của tôi :

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

tôi đang cố gắng để nhập khẩu này vào tôi Postgres DB địa phương (my_db) sử dụng psql. Tuy nhiên, tôi nhận được rất nhiều lỗi:

$ 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 

Lệnh psql -f db/latest.dump my_db không theo cùng một cách.

Cần phải làm gì để nhập tệp này cục bộ vào cơ sở dữ liệu mới với cùng một lược đồ, v.v ...?

Trả lời

16

tôi đã có thể sử dụng pg_restore để giải quyết vấn đề:

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

Tôi không nghĩ rằng bạn có thể sử dụng các tập tin sao lưu với 'psql': các Heroku“[file sao lưu sử dụng tùy chọn định dạng tùy chỉnh trong ' pg_dump'] (https://devcenter.heroku.com/articles/heroku-postgres-import-export#export) ”và“ [dump định dạng tùy chỉnh không phải là tập lệnh cho 'psql', nhưng thay vào đó phải được khôi phục với 'pg_restore'] (http://www.postgresql.org/docs/9.1/static/backup-dump.html#BACKUP-DUMP-LARGE)”. – matt

+0

BTW, nếu bạn đang sử dụng phiên bản PostgreSQL hiện tại, 'psql' sẽ cho bạn biết rằng bạn đang cố gắng khôi phục kết xuất định dạng tùy chỉnh và nên sử dụng' pg_restore'. –

+1

@CraigRinger có thể nói điều đó ở đâu? Tôi đang sử dụng 9.4 và không nhìn thấy nó. – tyler

Các vấn đề liên quan