pg_restore - Namespaces & Sequence numbers

Hallo,

ich bin mir nicht ganz sicher, ob das hier das Richtige Forum ist, also bitte ggf. verschieben…

Ich habe einen Dump mit “pg_dump -Fc […]” erstellt und möchte nun nur bestimmte Teile davon wiederherstellen.

  1. Frage:
    Kennt jemand eine Möglichkeit, mit pg_restore nur die aktuellen SeqNo-Values wiederherzustellen?
    Meine SeqNo enden alle auf “_seq”. In der .dump-Datei gibt es dafür also Zeilen wie “SELECT pg_catalog.setval(‘abc_seq’, 16, true);”.

2.Frage:
Meine Tabellen heißen alle “tab*”, also müsste es doch laut Doku möglich sein, mit der Option “-n” zu arbeiten, um nur die Tabellen (ohne Funktionen etc.) wiederherzustellen, oder habe ich da einen Denkfehler?
Jedenfalls führt “pg_restore.exe […] -n ‘tab*’ abc.dump” nicht zum gewünschten Ergebnis.


Meine PG-Version ist 8.2.9.


Vielen Dank schonmal und viele Grüße
max

grep existiert.

2.Frage:
Meine Tabellen heißen alle “tab*”, also müsste es doch laut Doku möglich sein, mit der Option “-n” zu arbeiten, um nur die Tabellen (ohne Funktionen etc.) wiederherzustellen, oder habe ich da einen Denkfehler?
Jedenfalls führt “pg_restore.exe […] -n ‘tab*’ abc.dump” nicht zum gewünschten Ergebnis.

-n stellt Objekte, und zwar alle des spezifizierten Schemas wieder her, und es erwartet IIRC keine Regex. Möglicherweise bist Du beim Studium der Man-page noch nicht bis zum Buchstaben t gelangt.



Andreas

Für die Zukunft: zieh dein Backup im Custom Format (–format=c), dann kannst du bei pg_restore ganz elegant einzelne Objekte wiederherstellen.

Hint: Zitat: "Ich habe einen Dump mit "pg_dump -Fc ".

Andreas

Ups, überlesen.

In dem Fall: mit pg_restore -l die Liste der Inhalte im Backup exportieren, danach auswählen, was man zurückspielen möchte. Dabei kann man ggf. auch nur die Sequenzen auswählen.

Danke für die schnellen Antworten.

-n stellt Objekte, und zwar alle des spezifizierten Schemas wieder her, und es erwartet IIRC keine Regex. Möglicherweise bist Du beim Studium der Man-page noch nicht bis zum Buchstaben t gelangt.

Doch (unglaublich aber wahr) ich bin bis zum Buchstaben t gelangt :wink:
Mir ist aber leider trotzdem nicht klar, wie -n und -t kombiniert werden sollen…vll stehe ich aber auch einfach auf dem Schlauch.
Auf der pg-dump Seite wird außerdem das Beispiel

To dump all schemas whose names start with east or west and end in gsm, excluding any schemas whose names contain the word test:
$ pg_dump -n ‘eastgsm’ -n 'westgsm’ -N ‘test’ mydb > db.sql

angegeben, deswegen bin ich davon ausgegangen, das auch bei pg_restore “… -n ‘tab*’ …” funktioniert.
Außerdem wäre es interessant zu wissen, ob das nur mit Tabellen, oder auch mit Sequenzen geht, also bei mir “… -n ‘*_seq’ …”, da das ja auch, im Sinne von

-n > namespace

–schema=> schema

Restore only objects that are in the named schema.

Objekte sind(?).

grep existiert.

… (leider) unter Windows

In dem Fall: mit pg_restore -l die Liste der Inhalte im Backup exportieren, danach auswählen, was man zurückspielen möchte. Dabei kann man ggf. auch nur die Sequenzen auswählen.

Ok, nur für die Sequenzen kann ich diesen Weg gehen. Hatte die Möglichkeit mit -l bzw. -L schon verworfen, da ich da auf ein anderes Problem mit dem Umsortieren der Zeilen gestoßen bin, siehe http://www.pg-forum.de/sonstige/2545-pg_restore-l-zeilen-umsortieren.html .