pg_dump ung pg_restore

Hallo,

ich habe eine Frage an euch, denn ich will mehrere Tabellen, Funktionen und Views in eine andere Datenbank migrieren. Ich benutze postgresql-8.1 unter Linux. Dafür wollte ich das Abladen der Daten mit pg_dump und das Wiederherstellen mit pg_restore machen. Aber da ich alles in eine sql-Datei packe, kann ich kein pg_restore verwenden. Deshalb mache ich es mit psql:

psql -f migration.sql -d mydbname

Damit bekomme ich aber einige Fehler, weil anscheinend die Tabellen nicht in der richtigen Reihenfolge in die dump-Datei geschrieben werden. Die Db läuft zwar gut, aber bei der Migration sieht es etwas unschön aus.

psql:migration.sql:11: ERROR: relation "public.user" does not exist
oder ERROR: table "user" does not exist

Wie könnte ich es denn besser machen? Viel. doch mit einer Archivdatei und danach mit pg_restore? Wie…
Gruss

komplett ungetestet:

mache ein pg_dump deiner DB. Dann ein pg_restore mit der Option -l. Das listet Dir alle Objekte auf. Das leitest Du in eine Datei. Diese mit $EDITOR so bearbeiten, daß nur die von Dir gewünschten Objekte drin stehen. Dann pg_restore mit -L und dieser von Dir editierten List-Datei aufrufen, da wird nur das übernommen, was in der List-Datei steht. Die Reihenfolge der Objekte sollte von Anfang an stimmen.

Andreas

Hi,

Wenn ich ein restore machen will, muss ich doch meine db vorher in eine Archivdatei dumpen?
Wenn ich es ohne eine Datei-Endung angebe funktioniert es auch, also so:

 pg_dump dbname -f dateiname -Fc

oder kann man das auch schöner machen?
Das restoren funktioniert auch ohne Fehler, dazu habe ich auch nur diesen Befehl ausgeführt:

pg_restore dateiname -d dbname

Mehr muss ich gar nicht machen. :slight_smile: