Announcement

Collapse
No announcement yet.

Datenbankschema auslesen

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

  • Datenbankschema auslesen

    Hallo,

    ich möchte das Datenbank Schema auslesen, wenn möglich per ANSI SQL - bin aber auch über jeden Hinweis dankbar, der Speziefisch für bestimmte Datenbanken gilt ...

    Das Hauptschema lese ich mit dem Befehl - SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' - aus.
    Jetzt benötige ich aber zu jeder dieser Tabellen die Unter-Tabellen und möchte von denen auch noch die einzelnen Felder mit Typ ermitteln.

    Vielleicht kann mir ja jemand sagen, wie das geht.

    Danke,

    Andre

  • #2
    Dafür gibt es keinen Standart wird von jedem DBMS anders gelöst. Vielliecht postet du diese Frage in dem Unterforum der verwendeten Datenbank.

    Comment


    • #3
      Mit Perl und dem DBI Modul wäre das relativ einfach zu bewerkstelligen

      Gruss
      MfG
      Cheat-Sheets for Developers / Programming Quotes

      Comment


      • #4
        Das ist eigentlich mit jeder Datenbankabstraktion möglich.

        Comment


        • #5
          Danke für die Antworten.

          SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' ist ja ANSI SQL und es funktioniert zumindest bei mySQL auch - ebenso wie SHOW TABLES.

          Und da dachte ich, es gäbe für die Unter-Tabellen und Felder auch noch Abfragen nach ISO.
          Die Idee ist es, zwar gängige Datenbanken zu unterstützen, aber zumindest eine Alternative (oder den Versuch) anzubieten, nicht unterstützte DB per ANSI anzusprechen.

          Danke

          Andre

          Comment


          • #6
            Es gibt keinen Standard wie die DBMS ihre Metadaten abfragen lassen.
            Auch 'Show Tables' ist kein Standard.
            Bei jedem Hersteller sieht das etwas anders aus.

            Comment


            • #7
              Nein, das war schon klar, dass SHOW TABLES mySQL spezifisch ist.

              Ok, ich verstehe, dass man die DB's nicht unter einem Hut bekommt.
              Aber es muss ja Möglichkeiten geben, an ein Schema zu kommen - wie es z.B. die Programme machen, die Datenbanken über ODBC ansprechen.

              z.B. Access - wenn ich eine Tabelle verknüpfen möchte und ODBC auswähle, listet Access mir ja die einzelnen Tabellen auf und fragt welche man verknüpfen möchte.
              Oder ist das eine Schnittstelle im ODBC Treiber?

              Comment


              • #8
                Ja der ODBC-Treiber der jeweiligen Datenbank benutzt datenbankspezifische Methoden zum Auslesen der Metdadaten.

                Comment


                • #9
                  Ok, das wäre ja die Lösung.
                  Kennt vielleicht noch jemand eine gute Anleitung, wie man einen ODBC Treiber anspricht um an die Funktionen zu kommen?

                  Danke,

                  Andre

                  Comment


                  • #10
                    Das können eigentlich auch die Zugriffkomponenetn für verschiedene Datenbanken.

                    Comment


                    • #11
                      Also wäre es ehr empfehlenswert, sich für die einzelnen DB durchzufragen?
                      Der Gedanke war der, dass ODBC ja flexibler ist und man wahrscheinlich mit wesendlich weniger Funktionen auskommen würde, wenn man ODBC die Arbeit machen läßt, mit Funktionen, die ja eh schon implementiert sind - oder sehe ich das falsch?

                      Comment


                      • #12
                        Ich würde die Bibliothek verwenden, welche ich sowieso verwende.

                        Comment


                        • #13
                          Wenn das so einfach wäre würde ich hier nicht nerven
                          Es geht um ein Programm das für Kunden ist, die verschiedene DBs einsetzen können - daher muss es so flexibel sein ...

                          Comment


                          • #14
                            Dann wäre ODBC eine, wenn auch nicht die Beste, Möglichkeit. Besser wäre es mit Bridge Pattern o.ä. zu arbeiten. Oder du verwendest eine ORM-Bibliothek.
                            Mit welcher Programmiersprache entwickelst du?

                            Comment


                            • #15
                              Die unkomplizierteste würde mir gefallen ...
                              Bridge Pattern sagt mir gar nichts, aber ich bin ja auch zum lernen hier ...
                              Das Gerüst des Programms steht in VB6, aber ich werde es evtl. zu VB.NET oder zu C konvertieren.
                              Wenn man sowas in VB6 nicht realisieren kann würde ich wohl, bis die Portierung abgeschlossen ist, auf eine DLL in C zurückgreifen.

                              Danke

                              Comment

                              Working...
                              X