![]() |
Datenbestände synchronisieren
Hallo zusammen,
ich habe zwei Datenbestände, die nicht in einer Datenbank sind. Ich kann also nicht mit SQL arbeiten. Ich suche jetzt nach einem Weg, wie ich mitbekomme wann ein Datensatz in einem der beiden Datenbestände gelöscht wird. Meine Idee ist, dass ich von jedem Datenbestand bei jeder Synchronisierung den Bestand zwischenspeichere und bei der nächsten Synchronisierung gegen den Zwischenspeicher vergleiche und den Unterschied dann jeweils im anderen Datenbestand lösche. Gibt es noch andere Möglichkeiten ? |
AW: Datenbestände synchronisieren
|
AW: Datenbestände synchronisieren
Zitat:
Welche Datenbank(en)? Oracle kennt ![]() SQL-Server kennt ![]() Postgres nutzt ![]() Verbindungen zwischen Oracle und MySQL scheinen auch ![]() Die Verbindungen... werden eingerichtet und entsprechend in die SQL-Statemets eingebaut und schon ist ein datenbankübergreifender Zugriff per SQL möglich. |
AW: Datenbestände synchronisieren
Erstmal danke für eure Antworten.
Zitat:
Zitat:
Um es eventuell etwas genauer zu beschreiben. Der eine Datenbestand ist eine Art CSV-Datei und der andere Datenbestand ist vergleichbar mit einem lokalen Adressbuch wie Outlook. In beiden Datenbeständen stehen mehrere Adressen, die immer wieder synchronisiert werden müssen. |
AW: Datenbestände synchronisieren
Hilft dann eventuell
![]() Nutze diese Komponente für CSV-Dateien und diverse, kleinere "Datenbankanwendungen" (in einer schon in die Jahre gekommenen Version). Die "Datenbankanwendungen" basieren alle auf CSV-Dateien, die einen für die Komponente benötigten Dateiheader "übergestülpt" bekommen. Die oben verlinke Version kann aber (laut Beschreibung) auch mit SQL umgehen. Als Freeware mit Source bei ![]() |
AW: Datenbestände synchronisieren
@Perlsau : es geht doch wohl um Änderungen innerhalb einer Datei. Deine Links beziehen sich auf Änderungen innerhalb eines Ordners.
Es nützt ja wohl nichts, zu wissen dass eine Datei verändert wurde, wenn man wissen müsste, was sich da innerhalb der Datei geändert hat. Allerdings : wer löscht denn was und wer soll das wissen ? :shock: Aber egal wie, das riecht schwer nach Redundanz und das sollte man tunlichst nur selten machen. 8-) |
AW: Datenbestände synchronisieren
Wenn nicht beide Quellen für die jeweiligen Daten eine API bieten, die eine Art OnChange-Event liefern, bleibt dir ja eigentlich nur noch regelmäßiges Erstellen einer Liste beider Datenbestände. Zu jedem Datensatz müsste dann noch mit gespeichert werden, ob der Satz in dem einen, dem andere oder in beiden Beständen vorkommt, und für jeden der beiden Bestände je noch einen Timestamp der letzten Änderung, die du festgestellt hast.
Dann musst du im Grunde "nur" noch daher gehen, und in beiden Beständen die jeweils fehlenden und/oder älteren Daten mit denen des jeweils anderen ergänzen/überschreiben, so dass deine Vergleichsliste nachher sagen würde: "Alle Sätze sind in beiden Beständen mit selbem Timestamp vorhanden". Optimierbar wäre das fast nur noch über eine Funktion von Windows, die dir ein Ereignis gibt, wann eine Datei geändert wurde. Ob es die gibt und wie die heisst weiss ich nicht, aber du musst auch dann für einen Abgleich sicherlich alle Daten anfassen. Und vor allem deine Vergleichsliste am besten auch persistent vorhalten. Idealzustand wäre natürlich den Bedarf für einen der Bestände zu eliminieren, aber wie realistisch das in der Praxis ist musst du selbst einschätzen. Zumindest nach aktuellen Informationsstand hier ;) |
AW: Datenbestände synchronisieren
Ich versuche mich mal wieder als Querdenker: Wenn du ein textbasiertes Format für beide Datenbestände findest (z.B. CSV), kannst du das auch über ein standardisiertes Diff abwickeln.
Konkret würde ich das hier mit Mercurial realisieren, bei dem ich die beiden Datenbestände in verbundenen Repositories verwalte und die Änderungen vom einen jeweils in das andere merge. Was man natürlich braucht, sind geeignete Tools für den Export/Import zwischen den nativen Datenbeständen und dem Textformat. Im Falle von Mercurial könnte man die sogar in den passenden Hooks aufrufen um das weitestgehend zu automatisieren. Das geht sicher auch mit anderen VCSs, aber mit Hg kenne ich mich halt am besten aus. |
AW: Datenbestände synchronisieren
Hallo Rolf,
auch eine Querdenker Idee: Du kannst *.csv Dateien mit der dem Jet OLE DB Provider öffnen. Bsp: ![]() Du must nur vordefinieren, wie die csv Datei (geht auch txt + Delimiter) aufgebaut ist. Wie greift du auf Outlook zu? Hatte mal eine Weiterentwicklung von den TurboPower OfficePartner Componenten betrieben. Damit könntest du einfach alle Daten (außer Bilder und Datums-Angaben) auslesen. Bei Bedarf melden. Aber weiter im Text. Der Jet OLE DB provider macht es dir möglich nun auch SQL Statements zu benutzen. Somit könntest du in einer Art Master-Detail realtion die Datensätze syncen und herausfinden welche hinzugefügt werden müssen bzw. gelöscht werden sollten. Gruß Michael |
AW: Datenbestände synchronisieren
Wenn es nicht gerade Abermillionen von Datensätzen sind, dann lies die beiden Dateien doch einfach in zwei Dictionaries ein und mach das Matching 'per Hand', das geht mit den Dictionaries sehr schnell.
|
AW: Datenbestände synchronisieren
Hallo zusammen,
danke für die vielen Antworten. Nachdem ich jetzt alle Antworten gelesen habe, habe ich mich dazu entschieden, immer vom letzten Sync den Datenbestand in einer Datei zu speichern und dann beim darauffolgenden Sync den Datenbestand aus der Datei und den aktuellen zu vergleichen. Die Differenz ist dann das, was ich im Sync-Datenbestand löschen muss. Das ganze mache ich dann für beide Datenbestände. |
AW: Datenbestände synchronisieren
Da es sich um Textdateien handelt, bietet sich der Einsatz eines Versionskontrollsystems an.
Jeder Standort gleicht seine Daten bei Bedarf mit dem Server ab, dafür genügt meist ein Mausklick. Es kann nachverfolgt werden wer, wann, was geändet hat. Die Anzahl der Standorte kann jederzeit geändert werden. z.B. ![]() |
AW: Datenbestände synchronisieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz