Kopię zapasową wykonuję za pomocą
pg_dump db_production > postgres_db.dump
a następnie kopiuję go do localhost przy użyciu scp.
Teraz, kiedy importuję do mojej lokalnej bazy danych, wyświetla się błąd
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
używając wiersza poleceń
pg_restore -d db_development postgres_db.dump
postgresql
backup
pg-restore
Haseeb Ahmad
źródło
źródło
Powyższa odpowiedź nie działa dla mnie, to zadziałało:
psql db_development < postgres_db.dump
źródło
Dla mnie, gdy próbuję przywrócić ze zdalnego hosta, którego użyłem
działało dobrze. A jeśli nie zdalne, po prostu następujące polecenie zadziałało.
źródło
Aby utworzyć kopię zapasową za pomocą
pg_dump
zgodnego z niąpg_restore
, musisz użyć--format=custom
/-Fc
podczas tworzenia zrzutu.Z dokumentów:
Twoje
pg_dump
polecenie może więc wyglądać następująco:I twoje
pg_restore
polecenie:źródło
Dla mnie to działa jak ten. C: \ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d dummy -f C: \ Users \ Downloads \ d2cm_test.sql
źródło
jeśli używasz pg_dump z -Fp do tworzenia kopii zapasowych w formacie zwykłego tekstu, użyj następującego polecenia:
aby skopiować wszystkie dane do bazy danych o nazwie dbname
źródło
Jeśli masz pełny zrzut bazy danych:
Jeśli jednak masz schematy przechowywane oddzielnie, to nie zadziała. Następnie musisz wyłączyć wyzwalacze wstawiania danych, podobnie jak
pg_restore --disable-triggers
. Możesz wtedy użyć tego:cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin
Na marginesie, myślę, że jest to bardzo niefortunna wada postgres. Domyślny sposób tworzenia zrzutu
pg_dump
jest niezgodny zpg_restore
. Jednak z kilkoma dodatkowymi klawiszami jest. WTF?źródło