AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbestände synchronisieren

Ein Thema von RWarnecke · begonnen am 17. Aug 2013 · letzter Beitrag vom 19. Aug 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Datenbestände synchronisieren

  Alt 17. Aug 2013, 21:11
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 ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Datenbestände synchronisieren

  Alt 17. Aug 2013, 22:06
Suchst du sowas?
Scheint dasselbe zu sein wie das da.
Oder darf's gleich was für Delphi sein?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Datenbestände synchronisieren

  Alt 17. Aug 2013, 22:31
Zitat von RWarnecke:
Ich kann also nicht mit SQL arbeiten
Warum nicht?
Welche Datenbank(en)?
Oracle kennt Datenbanklinks.
SQL-Server kennt Datenbankverbindungsserver.
Postgres nutzt dbLink
Verbindungen zwischen Oracle und MySQL scheinen auch möglich.

Die Verbindungen... werden eingerichtet und entsprechend in die SQL-Statemets eingebaut und schon ist ein datenbankübergreifender Zugriff per SQL möglich.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: Datenbestände synchronisieren

  Alt 17. Aug 2013, 23:07
Erstmal danke für eure Antworten.

Suchst du sowas?
Scheint dasselbe zu sein wie das da.
Oder darf's gleich was für Delphi sein?
Das ist nicht ganz das was ich suche. Ich muss mir das Delphi-Beispiel nochmal genauer anschauen, ob ich dass auf meine Datenbestände anwenden kann.

Zitat von RWarnecke:
Ich kann also nicht mit SQL arbeiten
Warum nicht?
Welche Datenbank(en)?
Oracle kennt Datenbanklinks.
SQL-Server kennt Datenbankverbindungsserver.
Postgres nutzt dbLink
Verbindungen zwischen Oracle und MySQL scheinen auch möglich.

Die Verbindungen... werden eingerichtet und entsprechend in die SQL-Statemets eingebaut und schon ist ein datenbankübergreifender Zugriff per SQL möglich.
Die Datenbestände sind keine Datenbanken. Deshalb ist hier kein SQL möglich.

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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Datenbestände synchronisieren

  Alt 17. Aug 2013, 23:31
Hilft dann eventuell tKBMMemTable?

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 Torry.net.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

AW: Datenbestände synchronisieren

  Alt 18. Aug 2013, 00:12
@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 ? Aber egal wie, das riecht schwer nach Redundanz und das sollte man tunlichst nur selten machen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Datenbestände synchronisieren

  Alt 18. Aug 2013, 04:36
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#8

AW: Datenbestände synchronisieren

  Alt 18. Aug 2013, 10:18
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Datenbestände synchronisieren

  Alt 18. Aug 2013, 11:37
Hallo Rolf,

auch eine Querdenker Idee:
Du kannst *.csv Dateien mit der dem Jet OLE DB Provider öffnen. Bsp: http://www.htmlgoodies.com/primers/d...omponents.html

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
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Datenbestände synchronisieren

  Alt 18. Aug 2013, 13:46
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz