Laden...

Datenbankabfrage über mehrere Datenbanken?

Erstellt von Merlin20 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.947 Views
M
Merlin20 Themenstarter:in
87 Beiträge seit 2006
vor 16 Jahren
Datenbankabfrage über mehrere Datenbanken?

Hallo,
ich suche nach einer geschickten Möglichkeit, SQL Abfragen über mehrere DBs (nicht Tabellen) zu erstellen. Dabei müssen das nicht unbedingt gleiche Datenbanksysteme sein.

Ich habe mir dazu folgendes gedacht:
Am einfachsten wäre es, wenn man für jede Datenbank, die in die Abfrage eingehen soll, eine einzelne Abfrage erstellt und das Ergebnis dann als Tabelle in eine extra Datenbank speichert. Mit dieser extra Datenbank kann dann letztlich die Abfrage ausgeführt werden.
Sicherlich würde das ein extrem großen Aufwand sein, jedes Mal diese "extra Datenbank" zu aktualisieren. Aber das könnte Nachts ohne Probleme geschehen.

Die Frage, die ich mir dabei stelle, ist, wie kann ich am besten aus den Daten der einzelnen Tabellen eine neue Tabelle in einer neuen DB (und Datenbanksystem) erstellen?
Theoretisch könnte ich ja mittels DataReader die einzelnen Daten aus den jeweiligen Tabellen holen und dann mit ein Insert SQL-Statement aufbauen und wieder in die neue DB einfügen.
Ich sehe dabei erstmal ein dickes Performance-Probleme.
Wie füge ich die Daten am besten ein? Wenn ich jedes Mal ein "INSERT INTO Tabelle etc." abschicke, ist das wahrscheinlich tierisch lahm. Da gibt es wahrscheinlich einen bessere Weg, oder?

Das nächste Problem ist, die benötigten Columns in der Tabelle zu erstellen. Die Frage ist ja hierbei, wie frage ich am besten ab, um was für ein Datenfeld (also VarChar, Int etc.) und dessen Länge es sich dabei handelt.

Das wäre meine Idee, wie man so etwas umsetzen kann.
Fallen euch andere elegantere Wege ein?

:Wissen ist Macht, nichts wissen macht nichts:

M
402 Beiträge seit 2005
vor 16 Jahren

Hi!

Schau Dir mal LINQ an.
Damit sollte eigentlich ein Abfrage über mehrere DB's möglich sein...?

Zumindest hab ich es in den Tuts und Videos so verstanden.

lg

M@TUK

M
Merlin20 Themenstarter:in
87 Beiträge seit 2006
vor 16 Jahren

Hast du einen passenden Link dazu?
So wie ich das gerade verstanden habe, hat das mehrere Nachteile.
Es gibt es noch nicht als Final. Für ein Produktivsystem ist mir das waage (was passiert, wenn die es wieder komplett über den Haufen schmeißen oder beschneiden?).
Dann sieht es mir so aus, also ob das kein normales AnsiSql ist.
Außerdem ist wohl eine Integration in eine C# 2.0 Umgebung nicht möglich (oder nur mit vielen Workarounds?).

Vielleicht sind das jetzt ja auch nur Vorurteile, die ich gerade so hier aufgeschnappt habe, aber sollte es wirklich so sein, so wäre das Abschreckung genug 😉.

Aber vielen Dank auf jeden Fall.

:Wissen ist Macht, nichts wissen macht nichts:

D
496 Beiträge seit 2005
vor 16 Jahren

hatte auch schon öfter das problem das ich ergebnisse brauchte wo die tabellen teilweise in einer DB2 und teilweise in Mysql waren ich habe das immer so gemacht dass ich die daten zuerst auf eine db gebracht habe und dann dort über joins zum entsprechenden ergebnis gekommen bin, hoffe das hilft dir weiter

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

M
Merlin20 Themenstarter:in
87 Beiträge seit 2006
vor 16 Jahren

So war es ja eigentlich gedacht. Nur möchte ich das mit (m)einem Programm machen.
Das Problem, das ich momentan sehe, ist die entsprechenden Datentypen der Spalten der Quelltabelle zu bestimmen und anschließend diese dann in die Zieltabelle zu schreiben. Da habe ich bisher keine Möglichkeit gefunden.

:Wissen ist Macht, nichts wissen macht nichts:

3.825 Beiträge seit 2006
vor 16 Jahren

ist die entsprechenden Datentypen der Spalten der Quelltabelle zu bestimmen und anschließend diese dann in die Zieltabelle zu schreiben. Da habe ich bisher keine Möglichkeit gefunden.

So geht das :


DbDataReader dr = null;
...
DataTable dt = dr.GetSchemaTable();		

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

M
Merlin20 Themenstarter:in
87 Beiträge seit 2006
vor 16 Jahren

Ähm ja, aber damit konnte ich bisher nicht die Typen der Tabelle auslesen. Verwendet habe ich das schon häufiger, um z.B. die Tabellen etc. aufzulisten. Auch die Columns einer Tabelle habe ich damit schon aufgelistet, nur konnte ich nicht herausfinden, wie ich damit dann auch die Column-Typen raus bekomme.

Kannst du mir da vielleicht ein Beispiel geben?

:Wissen ist Macht, nichts wissen macht nichts: