![]() |
Datenbank: BDE • Version: 5 • Zugriff über: TurboDB
Datenbanken abgleichen
Ich habe 2 identische Datenbanken mit je 3 Tabellen. 1x Mastertabelle und 2x Detailtabelle
Nun möchte ich die Datensätze aus DB1 in DB2 kopieren incl. der dazugehörigen Detailtabellen. Außerdem möchte ich vorher anhand eines Feldes prüfen ob der Datensatz bereits in der ziel Tabelle vorhanden ist. Ist er vorhanden soll ich gefragt werden ob ich überschreiben will, andernfalls wird er übersprungen und das kopieren wird fortgesetzt mit den restlichen Datensätzen. Und ein Feld in jedem Datensatz soll geleert werden. BatchMove kenne ich, da kann man aber nicht mit einer Frage reagieren wenn ein Datensatz vorhanden ist. Wie könnte ich das verwirklichen? Danke!! mfg |
AW: Datenbanken abgleichen
quick'n'dirty Methode:
Delphi-Quellcode:
manche DB unterstützen auch den SQL MERGE Befehl:
table1.open;
table2.open; table1.first; while not table1.eof do begin if table2.locate('id','table2.fieldbyname('id').value,[]) then table2.edit else table2.append; //Felder füllen table2.post; table1.next; end;
SQL-Code:
MERGE TableA AS ta
USING TableB AS tb ON (ta.ID = tb.ID) WHEN MATCHED THEN UPDATE SET ta.value = tb.value WHEN NOT MATCHED THEN INSERT(ID, value) VALUES (tb.ID, tb.value) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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