Aus der pg_dump
Dokumentation:
Beispiele
So sichern Sie eine Datenbank namens mydb in einer SQL-Skriptdatei :
$ pg_dump mydb > db.sql
So laden Sie ein solches Skript in eine (frisch erstellte) Datenbank mit dem Namen newdb :
$ psql -d newdb -f db.sql
So sichern Sie eine Datenbank in einer Archivdatei im benutzerdefinierten Format:
$ pg_dump -Fc mydb > db.dump
So sichern Sie eine Datenbank in einem Archiv im Verzeichnisformat:
$ pg_dump -Fd mydb -f dumpdir
So laden Sie eine Archivdatei in eine (frisch erstellte) Datenbank mit dem Namen newdb neu:
$ pg_restore -d newdb db.dump
Aus der pg_restore
Dokumentation:
Beispiele
Angenommen, wir haben eine Datenbank namens mydb in eine benutzerdefinierte Dump-Datei geschrieben:
$ pg_dump -Fc mydb > db.dump
So löschen Sie die Datenbank und erstellen sie neu aus dem Speicherauszug:
$ dropdb mydb
$ pg_restore -C -d postgres db.dump
Die obige Antwort hat bei mir nicht funktioniert, das hat funktioniert:
psql db_development < postgres_db.dump
quelle
Für mich, wenn ich versuche, von einem Remote-Host wiederherzustellen, habe ich verwendet
hat gut funktioniert. Und wenn nicht fern, funktionierte nur der folgende Befehl.
quelle
Um ein Backup zu erstellen, das mit
pg_dump
diesem kompatibel istpg_restore
, müssen Sie beim Erstellen Ihres Dumps das--format=custom
/ verwenden-Fc
.Aus den Dokumenten:
Ihr
pg_dump
Befehl könnte also so aussehen:Und dein
pg_restore
Befehl:quelle
Für mich funktioniert es so. C: \ Programme \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d Dummy -f C: \ Benutzer \ Downloads \ d2cm_test.sql
quelle
Wenn Sie pg_dump mit -Fp zum Sichern im Nur-Text-Format verwenden, verwenden Sie den folgenden Befehl:
um alle Daten mit dem Namen dbname in Ihre Datenbank zu kopieren
quelle
Wenn Sie einen vollständigen DB-Dump haben:
Wenn Sie Schemas jedoch separat aufbewahren, funktioniert dies nicht. Dann müssen Sie Trigger für das Einfügen von Daten deaktivieren, ähnlich wie
pg_restore --disable-triggers
. Sie können dann Folgendes verwenden: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
Nebenbei bemerkt, es ist ein sehr unglücklicher Nachteil von Postgres, denke ich. Die Standardmethode zum Erstellen eines Speicherauszugs
pg_dump
ist nicht kompatibel mitpg_restore
. Mit einigen zusätzlichen Schlüsseln ist es jedoch. WTF?quelle