Struktur / ForEach
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
einfach mal so drüber philosofiert...
eigentlich müßten doch beide Datenbanken ein Änderungsdatum tragen,
wann der letzte Schreibzugriff stattgefunden hat.
das sollte eigentlich selbstverständlich sein, bei jedem Datenbanksystem.
... irgendwie erscheint mir halt doch der Ansatz die Datensätze händisch zu vergleichen etwas ... umständlich.
eigentlich müßten doch beide Datenbanken ein Änderungsdatum tragen,
wann der letzte Schreibzugriff stattgefunden hat.
das sollte eigentlich selbstverständlich sein, bei jedem Datenbanksystem.
... irgendwie erscheint mir halt doch der Ansatz die Datensätze händisch zu vergleichen etwas ... umständlich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
@TheSaint
Das Problem ist, daß keiner Deine Datenbank(en) kennt. Vorgehensweisen gibt's dafür unendlich viele.
Mit der Auflistung der benötigten Inhalte deiner Datenbank hast schon mehr oder weniger eine Struktur. Wobei da nicht wirklich alles bräuchtest.
Wie auch immer, ofensichtlich fehlen Dir noch einige Grundkenntnisse, daher solltest besser mit einfacheren Dingen anfangen.
Das Problem ist, daß keiner Deine Datenbank(en) kennt. Vorgehensweisen gibt's dafür unendlich viele.
Mit der Auflistung der benötigten Inhalte deiner Datenbank hast schon mehr oder weniger eine Struktur. Wobei da nicht wirklich alles bräuchtest.
Wie auch immer, ofensichtlich fehlen Dir noch einige Grundkenntnisse, daher solltest besser mit einfacheren Dingen anfangen.
Eine Art Query-Planner soll die Ausführung von Map/Reduce-Funktionen in Hadoop stark beschleunigen.
musst Du wirklich alle Daten aller Tabellen auf einen Schlag einlesen?TheSaint hat geschrieben:Also die Datenbank besteht aus 160 Tabellen.
Das ist eigentlich eher unüblich.
Die meisten Datensätze einer Tabelle dürften mit anderen Datensätzen
anderer Tabellen in einer Beziehung stehen (Stichwörter Primary-Key und
Foreign-Key). Da könnte ein sinnvoller SQL-Query so manche Tabellen
miteinander 'joinen'.
Code: Alles auswählen
Select [felder] From [tabelle] Inner Join ...
a²+b²=mc²
Habe das jetzt umgesetzt, mit folgenden Codezeilen kann ichjear hat geschrieben:@TheSaint
Nee, das wird noch doller. Nun durchläuft das Ganze die Schleifen n1 * n2 * n3 mal und es ändern sich immer nur die Angaben aus der Liste, deren Index sich gerade ändert.
Für Dein Problem gibt es verschiedene Lösungen, je nach Anforderungen.
Wenn alle 3 Listen genau die gleiche Anzahl Mitglieder haben und die zusammengehörenden Informationen unter dem jeweils gleichen Listenindex liegen, dann kannst Du auch mit dem Listenindex einer der Listen in die anderen Listen greifen.
etwa so:
Es fragt sich dann aber, warum nicht nur eine Liste mit den drei Strukturen?Code: Alles auswählen
ForEach Liste1() ix = ListIndex(Liste1()) SelectElement(Liste2(), ix) : SelectElement(Liste3(), ix) ; nun stehen alle 3 Listen "parallel" und man kann die Strukturfelder auslesen Next
Wenn die Listen nicht auf diese Art "parallel" organisiert sind, kann man sie sowieso nur nacheinander auslesen.
Gibt es Ordnungsmerkmale, die den Zusammenhang zwischen bestimmten Mitgliedern definieren, dann muss man die Listen immer wieder nach diesen Merkmalen durchsuchen oder aber von vornherein eine weitere Liste der Indizes anlegen, die diese Zusammenhänge beschreiben.
auf alle Informationen zugreifen.
Code: Alles auswählen
lId = ListIndex(DB2Zeile())
SelectElement(DB2Zellinh(), lId) : SelectElement( DB2Tab(), lId)
Viele Grüße
Hallo Kiffi,
vielen Dank für Deine Antwort.
In Access 2003 VBA habe ich dies bereits einmal umgesetzt.
Ich habe zwei komplette Datenbanken miteinander verglichen.
Leider musste ich hierbei feststellen, das bei einem Vergleich
der SQL - Befehl zu lang geworden ist und SQL hier eine
Fehlermeldung brachte. "SQL-String" zu lang.
Hier habe ich mich dann beholfen, in dem ich die Tabellenspalten
in 40er Blöcke aufgeteilt habe und anschließend verglichen habe.
Nun dachte ich, da ich für das Einlesen einer gesamten Datenbank
ca. 22 Sekunden in PureBasic brauchte, den Vergleich der beiden
Datenbanken über PureBasic zu machen.
Das einlesen der beiden Datenbanken hat im moment nur
max 50 Sekunden gedauert.
Es sind ca 800000 Zelleninhalte der einzelnene Tabellen, bzw.
300000 Tabellenzeilen.
Das einzige was ich in PureBasic noch nicht so hinbekomme,
war, wie ich die Informationen bei mehreren Strukturen und LinkedListen verbinde und sie abrufe.
Nun bin ich dabei den Vergleich hin zu bekommen.
Vielen Dank nochmals für Deine Hilfe und viele Grüße
vielen Dank für Deine Antwort.
In Access 2003 VBA habe ich dies bereits einmal umgesetzt.
Ich habe zwei komplette Datenbanken miteinander verglichen.
Leider musste ich hierbei feststellen, das bei einem Vergleich
der SQL - Befehl zu lang geworden ist und SQL hier eine
Fehlermeldung brachte. "SQL-String" zu lang.
Hier habe ich mich dann beholfen, in dem ich die Tabellenspalten
in 40er Blöcke aufgeteilt habe und anschließend verglichen habe.
Nun dachte ich, da ich für das Einlesen einer gesamten Datenbank
ca. 22 Sekunden in PureBasic brauchte, den Vergleich der beiden
Datenbanken über PureBasic zu machen.
Das einlesen der beiden Datenbanken hat im moment nur
max 50 Sekunden gedauert.
Es sind ca 800000 Zelleninhalte der einzelnene Tabellen, bzw.
300000 Tabellenzeilen.
Das einzige was ich in PureBasic noch nicht so hinbekomme,
war, wie ich die Informationen bei mehreren Strukturen und LinkedListen verbinde und sie abrufe.
Nun bin ich dabei den Vergleich hin zu bekommen.
Vielen Dank nochmals für Deine Hilfe und viele Grüße