it-swarm.com.de

Tabelle während pg_restore ausschließen

UPDATE: Die Daten in der Tabelle konnten ausgeschlossen werden, während der Befehl pg_dump verwendet wurde. Noch schneller als der Versuch, die Daten nicht zu laden, weil Sie nicht warten müssen, bis diese Daten abgelegt werden.

--exclude-table-data=event_logs

(PostgreSQL) 9.4.4

Weiß jemand, wie man eine Tabelle ausschließt, wenn er einen pg_restore verwendet? Ich kann herausfinden, wie es geht, wenn ich einen pg_dump mache. Ich bin jedoch nicht derjenige, der die Müllkippe macht und kann sie nicht ausschließen. 

Es gibt zwei Tabellen im Dump, die wirklich groß sind und für eine Wiederherstellung für immer erforderlich sind. Ich möchte sie also überspringen.

15
covard

pg_restore hat keinen Parameter für eine ausschließende Tabelle; es gibt einen Parameter für eine Include-Tabelle.

-t Tabelle

--table = Tabelle

Wiederherstellung der Definition und/oder der Daten nur der benannten Tabelle. Mit mehreren -t-Switches können mehrere Tabellen angegeben werden. Das kann mit der Option -n kombiniert werden, um ein Schema anzugeben.

Wenn Sie über eine große Anzahl von Tabellen verfügen, müssen Sie nur ein wenig tippen, aber Sie können bestimmte Tabellen ausschließen, indem Sie deren Namen einfach aus der Liste streichen.

5
e4c5

Ich hatte das gleiche Problem. Eine lange Tabellenliste, und ich möchte die Daten aus einigen Tabellen ausschließen. 

Was ich gemacht habe, war folgendes:

Lauf

pg_restore -l $pgdump_file > restore.pgdump.list

Öffnen Sie diese restore.pgdump.list-Datei in einem Editor und fügen Sie vor der Zeile einen ; ein 

;2429; 0 27550 TABLE DATA public <table_to_explore> <database>

Nach dem Speichern der Datei kann sie jetzt zum Importieren verwendet werden, wobei alle Zeilen, die mit ; beginnen, ignoriert werden.

pg_restore -L restore.pgdump.list | psql

Sie können einen Einzeiler erstellen, um ; vor Zeilen mit einem bestimmten Tabellennamen hinzuzufügen, wenn Sie eine bestimmte Tabelle vollständig ignorieren möchten.

man pg_restore erzählt darüber in einem Beispiel am Ende der Dokumentation.

37

hier funktionierte der Befehl nicht:

pg_restore -L restore.pgdump.list | psql

beantwortet von Jesper Grann Laursen!

Hier funktionierte es in folgender Reihenfolge:

pg_restore -l $pgdump_file > restore.pgdump.list

;2429; 0 27550 TABLE DATA public <table_to_explore> <database>

pg_restore -v -L restore.pgdump.list -d dbname pgdump.file

Hier ist ein Einzeiler, basierend auf anderen Antworten:

pg_restore -L <(pg_restore -l ~/base.bck | grep -ivE 'TABLE DATA public (exclude_tbl_name|exclude_tbl_name_2|exclude_tbl_name_3)') -d base_truncated ~/base.bck
0
user3132194