| |
VB & DatenbankenTabellen zweier DBs syncronisieren | | | Autor: I.V. | Datum: 04.04.17 12:43 |
| Hallo zusammen,
ich habe mal wieder ein Problem und finde keinen Lösung.
Und mal wieder hoffe ich auf eure Hilfe.
Mein Problem:
Ich habe zwei Tabellen in zwei Datenbanken (mysql) (zwei verschiedenen Servern).
Die eine Tabelle wird von unserem System aktualisiert, hier sind immer nur die aktuellen Daten.
Die zweite Tabelle hat eine identische Struktur, allerdings möchte ich die jeweiligen Datensätze als neuen Datensatz einfügen, wenn es eine Änderung im Datensatz gab.
Mein erster Gedanke war eine Schleife, mit der ich die jeweiligen Datensätze vergleiche und ggf. einfüge, doch wenn dass regelmäßig laufen soll, ist das wohl sehr zeit raubend.
Hat da evtl. jemand von euch eine Idee?
Danke und Gruß Ingo
Wer aufhört sich zu verbessern, hört auf gut zu sein. | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: Manfred X | Datum: 04.04.17 20:17 |
| Hallo!
Füge den Tabellen Deiner "stets aktuellen" Datenbank jeweils eine
neue Spalte hinzu und trage dort bei Bearbeitung von Sätzen den Status
der entsprechenden Daten-Zeile ein:
- hinzugefügt
- geändert
- gelöscht
Bei der Synchronisierung werden in jeder Tabelle die
abgefragten, markierten Datensätze der "aktuellen" DB in der
Backup(?)-DB entsprechend gelöscht, aktualisiert oder eingefügt.
In den Tabellen der "stets aktuellen" DB werden die Einträge
der Datensätze in der Markierspalte danach auf "neutral" zurückgesetzt. | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: Franki | Datum: 05.04.17 05:50 |
| Hallo,
das mit der Schleife funtioniert schon, aber es geht auch einfacher...
Zitat: | |
Die eine Tabelle wird von unserem System aktualisiert, hier
sind immer nur die aktuellen Daten.
Die zweite Tabelle hat eine identische Struktur, allerdings
möchte ich die jeweiligen Datensätze als neuen Datensatz
einfügen, wenn es eine Änderung im Datensatz gab.
| |
Na ja, du weißt ja wann welcher Datensatz in der ersten DB verändert / aktualisirt wird. Also kannst du dann ja ganz gezielt mit dessen ID auf die zwete DB zugreifen und den ensptrechende Datensatz dort auch in den relevanten Bereichen ändern.
Zitat: | |
Mein erster Gedanke war eine Schleife, mit der ich die
jeweiligen Datensätze vergleiche und ggf. einfüge, doch wenn
dass regelmäßig laufen soll, ist das wohl sehr zeit raubend.
| |
Wie gesagt, eine Schleife brauchst du nicht, da die jweiligen Datensätze ja bekannt sind (und wahrscheinlich eine eindeutige ID oder so haben)
Wenn du z.B. Datensatz 4711 ändern möchtest, dann rufe genau diesen Datensatz in der andern DB auf, schreibe die geänderten Werte rein und gut ist es.
Eine komplette Liste ist das völlig unnötig und auch nicht userfreundlich.
Gruß
Frank | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: Manfred X | Datum: 05.04.17 07:42 |
| Hallo!
Ganz so einfach ist es wohl nicht gemeint.
Die "Backup"-DB soll anscheinend den Verlauf der Modifikationen enthalten:
[I]Ich habe zwei Tabellen in zwei Datenbanken (mysql) (zwei verschiedenen Servern).
Die eine Tabelle wird von unserem System aktualisiert, hier sind immer [U]nur[/U] die aktuellen Daten.
Die zweite Tabelle hat eine identische Struktur, allerdings möchte ich die jeweiligen
Datensätze als [u]neuen Datensatz[/B] einfügen, wenn es eine Änderung im Datensatz gab.[/I]
Ein Abgleich der Datensätze über die ID ist in diesem Fall nicht möglich.
Zweckmäßig könnte es sein, die ID der Sätze in der aktuellen Datenbank in eine zusätzliche
Spalte der Tabellen in der Backup-DB zu übernehmen (Rückverzeigerung). | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: I.V. | Datum: 05.04.17 09:54 |
| Guten Morgen zusammen,
danke für eure Ideen, doch leider geht das so nicht.
Das Füllen der Tabelle aus dem System erfolg täglich und es werden hier immer alle Daten gelöscht und die neuen Daten des letzten Jahres neu geschrieben. Wenn ich also ein zusätzliches Feld einbaue, wird es immer leer sein.
Auf das Übertragen der Daten habe ich leider keinen Einfluss. Dies ist ein automatischer Prozess der von der EDV Abteilung inizieiert wurde. Hier eine Änderung zu erreichen ist er müßig.
Die zweite Tabelle soll einen Verlauf darstellen, das heißt, wenn ein Datensatz in dieser Tabelle schon vorhanden ist und bei einem Feld ein anderer Wert (Betrag) steht, dann soll ein neuer Datensatz eingefügt werden.
Bei den Daten geht es um Artikelkosten. In unserem Hauptsystem ist keine Historie möglich.
Deshalb dieser Weg.
Danke und Gruß Ingo
Wer aufhört sich zu verbessern, hört auf gut zu sein. | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: Manfred X | Datum: 05.04.17 14:37 |
| Hallo!
[I]Das Füllen der Tabelle aus dem System erfolg täglich und es werden hier immer
alle Daten gelöscht und die neuen Daten des letzten Jahres neu geschrieben.[/I]
Das verstehe ich leider nicht.
Vor dem Löschen der Daten muß natürlich die Aktualisierungsroutine laufen,
die die als geändert markierten Datensätze in die Verlauf-DB einträgt.
Allerdings: Wenn ohnehin alle Daten täglich neu sind, müssen sie doch alle in den
Verlauf ??? | |
Re: Tabellen zweier DBs syncronisieren | | | Autor: I.V. | Datum: 05.04.17 16:02 |
| Hallo Manfred,
ich hohle mal etwas weiter aus.
Wir habe Hauptsystem Infor. Mit Win XP konnten wir direkt auf die Datenbank zugreifen und uns Daten, z.B. zur Entlohnung (Arbeitszeiten, gemeldete Aufträge usw.) heraus holen.
Ab Win 7 ging das wegen der ODBC Treiber nicht mehr.
Deshalb wurde eine DB mysql DB mit identischen Tabellen erstellt und täglich werden dann alle Inhalte gelöscht und neu geschrieben
Ich hätte das auch anders gemacht (habe ich auch vorgeschlagen), aber es ist halt so.
Ich möchte jetzt, wie beschrieben, eine Historie von verschiedenen Daten und ich dachte halt, dass ich dann regelmäßig nen Job mit einem "Insert into ..." laufen lassen könnte.
Da die Tabellen aber nicht in ein DB sind, weiß ich noch nicht, wie ich das machen kann.
Gruß Ingo
Wer aufhört sich zu verbessern, hört auf gut zu sein. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|