Laden...

Schema mit Relationen aus ODBC Quelle lesen

Erstellt von Grumbler85 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.019 Views
G
Grumbler85 Themenstarter:in
538 Beiträge seit 2008
vor 14 Jahren
Schema mit Relationen aus ODBC Quelle lesen

verwendetes Datenbanksystem: ODBC

Hallo ihr DatenbankerInnen,

ich versuche aus einer ODBC Datenquelle das vollständige Datenbankschema auszulesen.
Tabellen habe ich bereits gelesen - auch deren Spalten und soweit ich das sehe sind zumindest die Primary-Keys auch dabei.

Nun möchte ich aber durchaus auch noch zusätzlich die Fremdschlüssel kennen, also die Relationen der Tabellen untereinander.

Leider bietet hier die ODBC, aber keine schöne "GetSchema" funktion an, welche dieses "auf einen Rutsch" bewerkstelligen würde - und ich bin mit meinem Latein am Ende.

Deshalb würde ich mich sehr freuen, wenn jemand hier helfen könnte das Schema zusammenzufummeln oder tipps geben kann, wo ich weitere Informationen bekommen kann.

Beste Grüße und vielen Dank im Vorraus
TG

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

J
3.331 Beiträge seit 2006
vor 14 Jahren

Hallo,

dein Ziel kann vermutlich nicht mit GetSchema erreicht werden. In :rtfm: heißt es:

Verstehen der anbieterspezifischen Schemaauflistungen

Der Microsoft SQL Server Jet ODBC-Treiber unterstützt neben den allgemeinen Schemaauflistungen auch die folgenden spezifischen Schemaauflistungen:
* Tables
* Indexes
* Columns
* Procedures
* ProcedureColumns
* ProcedureParameters
* Views

Von ForeignKeys ist leider nicht die Rede.

Was für eine Datenquelle hast du denn? Vielleicht gibt es einen besser geeigneten DbProvider als ausgerechnet die Minimalversion Odbc?

Gruß Jürgen

G
Grumbler85 Themenstarter:in
538 Beiträge seit 2008
vor 14 Jahren

Nun leider kann ich es nicht sagen, welche Datenquelle es ist, da es keine fest definierte "Datenbank" (oder was auch immer für eine Struktur) ist, sondern alles was ODBC kann erlaubt.

Ich lasse mich aber gerne belehren, denn wenn OleDB - Treiber(?) ebenso gut verbreitet sein sollten wie ODBCs, bin ich nicht auf ODBC angewiesen.

Ich las grade "neben den allgemeinen [...] folgende spezifische".
Heißt das, dass "Tables" per GetSchema eventuell gar nicht verfügbar ist?

Gibt es eine Liste oder ähnliches, die mir sagt auf was ich mich bei ODBC verlassen kann?

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

J
3.331 Beiträge seit 2006
vor 14 Jahren

Ich lasse mich aber gerne belehren, denn wenn OleDB - Treiber(?) ebenso gut verbreitet sein sollten wie ODBCs, bin ich nicht auf ODBC angewiesen.

Oledb ist eine Winzigkeit besser, bietet aber noch weniger Schemata. Die Seite, die ich vorhin zitiert hatte, enthält alles, was die Standardtreiber von ADO.NET anbieten.

Ich las grade "neben den allgemeinen [...] folgende spezifische".
Heißt das, dass "Tables" per GetSchema eventuell gar nicht verfügbar ist?

Nein, "Tables" werden immer geliefert. Aber mit den Indizes fangen die Spezialitäten schon an. Eine csv-Datei beispielsweise hat keinen Index; also kann GetSchema auch nichts liefern (auch wenn es in obiger Liste enthalten ist; wahrscheinlich ist das eine leere Tabelle).

Gibt es eine Liste oder ähnliches, die mir sagt auf was ich mich bei ODBC verlassen kann?

Siehe mein obiges Zitat - das ist diese Liste.

Jürgen

Nachtrag: Eine spezielle Datenquelle kann weitere Spezialitäten enthalten. Diese sind natürlich irgendwie gespeichert. Je nachdem können sie auch irgendwie abgefragt werden; aber Odbc enthält keinen allgemein passenden Befehl.

F
10.010 Beiträge seit 2004
vor 14 Jahren

Das alles über OleDB oder ODBC zu machen kommt aus zeiten von VB6 und hat eigentlich
in einer echten OOP Welt nicht mehr seine Berechtigung.

Du willst also eher soetwas wie :
http://code.google.com/p/migratordotnet/
http://code.google.com/p/fluentmigrator/
http://www.codeplex.com/RikMigrations

Alle haben einen OOP Weg um an die verschiedenen Schemata zu kommen.