it-swarm.com.de

Wie erstelle ich eine Sicherung einer einzelnen Tabelle in einer Postgres-Datenbank?

Gibt es eine Möglichkeit, mit postgres eine Sicherung einer einzelnen Tabelle in einer Datenbank zu erstellen? Und wie? Funktioniert das auch mit dem Befehl pg_dump?

125
Roland

Verwenden --table erzählen pg_dump welche Tabelle muss gesichert werden:

pg_dump --Host localhost --port 5432 --username postgres --format plain --ignore-version --verbose --file "<abstract_file_path>" --table public.tablename dbname
172
Frank Heikens

Wenn Sie auf Ubuntu sind,

  1. Loggen Sie sich in Ihren postgres-Benutzer ein Sudo su postgres
  2. pg_dump -d <database_name> -t <table_name> > file.sql

Stellen Sie sicher, dass Sie den Befehl ausführen, bei dem der Benutzer postgres über Schreibrechte verfügt (Beispiel: /tmp).

Bearbeiten

Wenn Sie die .sql-Datei auf einem anderen Computer speichern möchten, müssen Sie möglicherweise die Eigentümerinformationen überspringen, die in der .sql-Datei gespeichert werden.

Sie können pg_dump --no-owner -d <database_name> -t <table_name> > file.sql Verwenden.

67

pg_dump -h localhost -p 5432 -U postgres -d mydb -t my_table> backup.sql

Sie können die Sicherung einer einzelnen Tabelle durchführen, aber ich würde vorschlagen, die Sicherung der gesamten Datenbank durchzuführen und dann die jeweils benötigte Tabelle wiederherzustellen. Es ist immer gut, eine Sicherung der gesamten Datenbank zu haben.

9 Möglichkeiten, pg_dump zu benutzen

31
Prashant Kumar

Wenn Sie eine grafische Benutzeroberfläche bevorzugen, können Sie pgAdmin III (Linux/Windows/OS X) verwenden. Klicken Sie einfach mit der rechten Maustaste auf die Tabelle Ihrer Wahl und wählen Sie "Backup". Es wird ein pg_dump Befehl für Sie.

enter image description here

enter image description here

enter image description here

10

Als Ergänzung zu Frank Heikens Antwort sollten Sie das Flag copy from stdin Angeben, wenn Sie INSERT -Anweisungen anstelle von --inserts Verwenden möchten

pg_dump --Host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname

Beachten Sie, dass ich das Flag --ignore-version Weggelassen habe, da es veraltet ist.

0
user3207874