Laden...

DB-Struktur aus Access auslesen und Textdatei erst.

Erstellt von Marcel vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.792 Views
M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren
DB-Struktur aus Access auslesen und Textdatei erst.

Hallo,

ich möchte gerne wissen wie ich am geschicktesten die Datenbankstruktur
aus einer DB auslese - in meinem Fall eine Access DB.

Ich möchte nähmlich ein Programm schreiben welches die DB connected
die Struktur ausliest und diese in eine Datei schreibt. Zum Beispiel könnte
ich mir vorstellen eine Textdatei mit SQL Anweisungen zu erstellen, die mir die
entsprechenden Tabellen und Felder kreiert.
Diese könnte man dann ganz einfach in anderen SQL DBMS verwenden um dort
die gleiche Datenstruktur aufzubauen.

Wie ich eine DB connecte weiss ich. Aber wie würdet Ihr weiter vorgehen? Gibt es verschiedene Wege, die jeweils andere Vor- und Nachteile haben oder gibt es
eine ganz bestimmte Vorgehensweise für soetwas?

Dank

B
483 Beiträge seit 2005
vor 19 Jahren

Hallo,
der klassische Weg:
die Propeties-Collection einer ADODB.Connection-Komponente abfragen.

N
4.644 Beiträge seit 2004
vor 19 Jahren

Schau Dir mal GetOleDbSchemaTable an.

S
127 Beiträge seit 2004
vor 19 Jahren

Hi,

wenn du es universel machen willst, dann solltest du dir die Tabelle durch ein Select holen. Und dann die Columns durchlaufen, dadurch bekommst du die Feldnamen und deren Datentypen. Bei den Datentypen ist aber darauf zu achten das nicht alle Datentypen eines DBMS bei dem anderen DBMS gibt.
Beispiel:
nvarchar -> SQL Server (variabler Text)
Text -> MS Access (variabler Text)
varchar2 -> Oracle (variabler Text)

Wie du siehst ist die Typenbezeichnung nicht immer gleich. Aber ich denke das die gängigsten Datentypen bei allen Unterstütz werden.
(Number, Varchar, Date, Blob)

Weiterhin musst du beachten das die grossen DBMS Schemas benutzen, was zum Beispiel Access nicht tut. Schemas sind Aufteilungen in der DB selber, so das es mehrere Tabellen mit dem Namen "USER" geben kann. (Die eine heißt dann [userx].[USER] und die zweite heißt dann [usery].[USER].)

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren

Danke.

Das mit den Datentypen war mir bekannt.

Und ich möchte es möglichst universell ertstellen. Allerdings
weiß ich nicht warum die Method: "Per SQL Anweisung alle Tabellen zu durchlaufen"
dann der bessere Weg ist?

Gruz

S
127 Beiträge seit 2004
vor 19 Jahren

Na ja die Tabelle selber zu analysieren hat den vorteil das du nicht für jedes DBMS seine Besonderheiten beachten musst.
Also Oracle stellt dir dafür zum Bespiel den Sql-Befehl Desc (kommt in dem Fall von Description und hat nichts mit dem sortieren zu tun), beim SQL Server musst du in sysobject Tabelle schauen.

Ich meine was alle DB machen ist, dass bei einem "Select * From <Tabelle>" ein Ergebniss zurückliefern wird und das kann man ja analysieren.

C
1.215 Beiträge seit 2004
vor 19 Jahren

du könntest auch versuchen, dir die abfrage per DataAdapter in einem DataSet ausgeben zu lassen.
der vorteil ist, dass du hier die vom treiber erstellten tabellen hast.
dort kannst du dann die Columns durchlaufen und deren properties abfragen.

grtz
chief