Announcement

Collapse
No announcement yet.

pg_dump oder alternatives Scripting gesucht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • pg_dump oder alternatives Scripting gesucht

    Hallo,

    ich bin gerade auf der Suche, nach einem möglichst flexiblen Verfahren, ein Schema in PG als Create Script zu erstellen.
    Ich experimentiere mit pg_dump und benötige erstmal keine Daten. Am nächsten kommt die Sicherungsvariante "Einfach"/"plain", die ich aus pg_admin aufrufe, mit pre und post data.

    Wenn ich hier allerdings einzelne Tabellen "ausknipse", erhalte ich statt des vollen Schemas (tables, views, functions, ..) nur noch die tables.

    Ich habe außerdem Funktionen wie pg_catalog.pg_get_functiondef entdeckt, die es erlauben, gezielt Objekte abzufragen- sehr schön-, dieser Funktionssatz scheint aber unvollständig (z.B. gibt es offenbar kein pg_catalog.pg_get_tabledef, ..). So ist man nicht in der Lage, entlang des Dictionaries bzw. der Abhängigkeiten individuelle Scripts zu erstellen.

    Hat da jemand Erfahrung zu mit pg_dump oder Tipps zu anderen Tools?

    Später würde ich noch gern gezielt Table Data Insert Statements von einigen Application Daten produzieren, sowie Diffs von dem ein oder anderen. Es geht, wie man sich denken kann um deploy.
    Gruß, defo

  • #2
    Originally posted by defo View Post
    Hallo,

    ich bin gerade auf der Suche, nach einem möglichst flexiblen Verfahren, ein Schema in PG als Create Script zu erstellen.
    Ich experimentiere mit pg_dump und benötige erstmal keine Daten. Am nächsten kommt die Sicherungsvariante "Einfach"/"plain", die ich aus pg_admin aufrufe, mit pre und post data.

    Wenn ich hier allerdings einzelne Tabellen "ausknipse", erhalte ich statt des vollen Schemas (tables, views, functions, ..) nur noch die tables.
    Schau Dir die Man-page von pg_dump an. Schau Dir auch das custom - Format an, damit bekommst ein 'TOC - Table Of Contents', was alles im Dump ist. Diese kannst Du auch aus einem -Fc - Dump extrahieren, editieren und bei pg_restore verwenden.


    Ich habe außerdem Funktionen wie pg_catalog.pg_get_functiondef entdeckt, die es erlauben, gezielt Objekte abzufragen- sehr schön-, dieser Funktionssatz scheint aber unvollständig (z.B. gibt es offenbar kein pg_catalog.pg_get_tabledef, ..). So ist man nicht in der Lage, entlang des Dictionaries bzw. der Abhängigkeiten individuelle Scripts zu erstellen.
    Beachte, daß sich interne Tabellen von Version zu Version ändern können - vertrau nicht darauf, daß das da konstant ist und bleibt!

    Comment


    • #3
      Originally posted by akretschmer View Post
      Schau Dir die Man-page von pg_dump an. Schau Dir auch das custom - Format an, damit bekommst ein 'TOC - Table Of Contents', was alles im Dump ist. Diese kannst Du auch aus einem -Fc - Dump extrahieren, editieren und bei pg_restore verwenden.

      Beachte, daß sich interne Tabellen von Version zu Version ändern können - vertrau nicht darauf, daß das da konstant ist und bleibt!
      mmh, die toc Ergebnisse sahen mir etwas "Binär" aus, zumindest ein paar Sonderzeichen drin, nichts wo ich gleich editieren würde.

      Die internen Tabellen interessieren mich nicht. Du meinst doch "dictionary.." Tabellen?
      Ich versuche die TOC noch mal zu entziffern.

      Restore will ich auch nicht. Ich möchte Create / Alter Scripte, plus einige Insert Statements für Anwendungsdaten.
      Die Alter Scripte werde ich dann wohl mit einem Diff Tool machen.

      Danke!
      Gruß, defo

      Comment


      • #4
        Originally posted by defo View Post
        mmh, die toc Ergebnisse sahen mir etwas "Binär" aus, zumindest ein paar Sonderzeichen drin, nichts wo ich gleich editieren würde.
        Jede Zeile ist ein Objekt, welches im Dump enthalten ist. Man kann also z.B. einzelne Zeilen löschen und beim pg_restore mit -L dann das TOC-File angeben.

        Die internen Tabellen interessieren mich nicht. Du meinst doch "dictionary.." Tabellen?
        Die mit pg_ anfangen.

        Comment


        • #5
          Originally posted by akretschmer View Post
          Jede Zeile ist ein Objekt, welches im Dump enthalten ist. Man kann also z.B. einzelne Zeilen löschen und beim pg_restore mit -L dann das TOC-File angeben.



          Die mit pg_ anfangen.
          Ok, hab ich glaub ich kapiert.

          Mir geht es eher um eine gezielte Vorauswahl und zwar Schema spezifisch.
          Ich kann zwar in PGadmin einzelne Tabellen an/abwählen (im Plain-Mode). Sobald ich das mache, fehlen aber sämtliche anderen (manchmal abhängigen) Objekte, also Views, etc.. Lasse ich die Vorauswahl unangetastet, erhalte ich auch Views usw.

          Das bedeutet offenbar, ich erhalte per pg_dump entweder ein komplettes Schema Script oder aber, ich muss alle Objekte, die ich haben möchte, einzeln angeben, in einer "positiv" Liste.

          Wenn ich das mit der TOC richtig verstanden habe, könnte ich hier diese Datei nachträglich eindampfen und beim Einspielen angeben, sozusagen eine "exclude Funktion".
          Gruß, defo

          Comment


          • #6
            Originally posted by defo View Post
            Ok, hab ich glaub ich kapiert.

            Mir geht es eher um eine gezielte Vorauswahl und zwar Schema spezifisch.
            Ich kann zwar in PGadmin einzelne Tabellen an/abwählen (im Plain-Mode). Sobald ich das mache, fehlen aber sämtliche anderen (manchmal abhängigen) Objekte, also Views, etc.. Lasse ich die Vorauswahl unangetastet, erhalte ich auch Views usw.

            Das bedeutet offenbar, ich erhalte per pg_dump entweder ein komplettes Schema Script oder aber, ich muss alle Objekte, die ich haben möchte, einzeln angeben, in einer "positiv" Liste.

            Wenn ich das mit der TOC richtig verstanden habe, könnte ich hier diese Datei nachträglich eindampfen und beim Einspielen angeben, sozusagen eine "exclude Funktion".
            Ich nutze PGAdmin nicht, vielleicht kann das nicht alle Features von pg_dump nutzen. Mit -t kannst Du tabellen includen, mit -T excluden.

            Comment

            Working...
            X