FlowHeater Demo Video
 
Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Schauen Sie sich auch die verfügbaren Beispiele zum MySQL Adapter an evtl. kann Ihre Frage hiermit schon beantwortet werden: CSV Import , Nur neue Datensätze exportieren , Datenmigration
  • Seite:
  • 1

THEMA:

Nur geänderte Datensätze exportieren 1 Woche 1 Tag her #4095

  • Oliver Barz
  • Oliver Barzs Avatar Autor
  • Offline
  • Beiträge: 10
Guten Morgen,

ich habe diese Doku gelesen https://flowheater.net/de/beispiele/mysql-csv-datensaetze-exportieren
.
Ist es mit FlowHeater auch möglich, keine neuen Datensätze zu exportieren, sondern veränderte Datensätze?
Wenn sich in einem Datensatz z.B. der Preis beim letzten Import verändert hat, dann würde ich diese gern exportiert haben.
Und wenn ich einen anderen Foreneintrag zu diesem Thema richtig verstanden habe, dann ist der o.g. Doku Eintrag auch für Access 1:1 anwendbar?

Vielen Dank
Oliver Barz

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Oliver Barz.

Nur geänderte Datensätze exportieren 1 Woche 14 Stunden her #4096

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1561
Hallo Herr Barz,

um nur, seit einem vorherigen Export, geänderte Datensätze zu verarbeiten ist etwas Vorarbeit notwendig. Das Problem ist, per Default fehlt ein Kennzeichen (Datum, JA/NEIN Feld, etc.) anhand Sie die geänderten Datensätze eindeutig identifizieren können.

Gut wäre wenn Ihre Anwendung, die die Daten ändert, in einem Feld protokolliert, dass was geändert wurde. Das kann z.B. ein JA/NEIN Feld sein, das lediglich angibt, dass der Datensatz geändert wurde oder aber ein Datumsfeld worüber protokolliert wird wann die letzte Änderung am Datensatz stattgefunden hat. Wenn das nicht gegeben ist, können Sie über HASH Werte ermitteln ob sich Datensätze seit einem vorherigen Export geändert haben, das ist der komplizierteste Weg.

Hier mal kurz die Vorgehensweisen, im Anhang finden Sie 3 kleine Beispiel dazu inkl. einer Access Datenbank.

Nur geänderte Datensätze exportieren über ein Ja/Nein Feld)
Das ist der einfachste Fall. Wenn Ihre Anwendung bei einem Update ein zusätzliches JA/NEIN Feld z.B. [Geändert] auf JA bzw. TRUE setzt. Hier brauchen Sie auf der READ Seite in Ihrem SELECT lediglich

    select * from [t_Tabelle2] where [Geändert] = true

angeben und es werden nur Datensätze exportiert die seit einem vorherigen Export geändert wurden. Am Ende der Verarbeitung müssen Sie das Feld natürlich wieder zurücksetzen, sonst werden beim nächsten Export diese Datensätze wieder verarbeitet. Das können Sie über eine SQL Heater am Ende der Verarbeitung über folgenden SQL Befehl erledigen.

    update t_Tabelle2 set [Geändert] = false

So werden über ein zusätzliches JA/NEIN Feld nur Datensätze verarbeitet die geändert wurden, siehe Beispiel „geänderte-datensätze-über-ja-nein-feld.fhd“


Nur geänderte Datensätze exportieren über ein Datumsfeld [Letzte Änderung])
Hier wird es schon komplexer. Das Problem hier ist, Sie können nicht einfach auf einen statischen Wert abfragen, Sie benötigen ein Datum inkl. Uhrzeit wann Sie das letzte Mal Daten exportiert haben. Für diese Dynamik benötigen Sie einen FlowHeater Parameter , der den letzten Stand für einen nachfolgenden Export speichert. Hierzu müssen Sie lediglich in den Paramater Einstellungen die Option „Speichern“ aktivieren. So wird der aktuelle Inhalt nach dem Export in einer zusätzlichen Datei „Definitionsname.fhpara“ abgespeichert. Vor einem nächsten Lauf/Export werden die Parameter mit diesen Wert vorinitialisiert. Das ermöglicht Ihnen im SELECT auf der READ Seite folgend dymische SQL Abfrage.

    select * from [t_Tabelle3] where [LetzteÄnderung] > #$DATUM$#

In der Definition müssen Sie noch sicherstellen, dass der Paramater $DATUM$ mit dem maximal letzten Datum gesetzt wird. Dazu verwenden Sie den MAX Heater zusammen mit GET/SET Parameter Heater , siehe Beispiel „geänderte-datensätze-über-datums-feld.fhd“.

Wichtig hier, das Datum sollte im Parameter als ISO Datum „yyyy-MM-dd HH:mm:ss“ formatiert werden!





Nur geänderte Datensätze exportieren über HASH Werte)
Jetzt wird es kompliziert :-) und leider auch langsam :-( Das Problem hier ist, Sie müssen in einen vorgelagerten Verarbeitungsschritt über alle Datensätze gehen und HASH Werte generieren bzw. abgleichen. Umso mehr Datensätze Sie verarbeiten möchten umso langsamer wird das Ganze.

Das Vorgehen ist folgendes. Alle Datensätze lesen und über alle Felder einen eindeutigen HASH Wert bilden. Dazu werden alle Felder auf einen String Append Heater gezogen um zu einer Zeichenkette zusammengefasst zu werden um dann mittels des HASH Heater daraus einen eindeutigen HASH Wert zu bilden. Ändert sich ein Inhalt auch nur an einem Feld ist auch der HASH Wert unterschiedlich. Die HASH Werte der einzelnen Datensätze werden in einer separaten Tabelle gespeichert. Zusätzlich wird hier wieder ein JA/NEIN Feld aktualisiert, worüber dann der Datenabgleich stattfindet.

Im zweiten Verarbeitungsschritt können dann die seitdem letzten lauf geänderten Datensätze über eine SQL JOIN über beide Tabellen exportiert werden. Am Ende der Verarbeitung muss dann wieder das JA/NEIN Feld [Geändert] auf NEIN bzw. FALSE gesetzt werden. Das wird wieder mittels des SQL Heater am Ende der Verarbeitung durchgeführt.

Hier der SQL JOIN Befehl um anhand der HASH Werte Tabelle nur geänderte Datensätze zu exportieren.

    select T1.* from [t_Tabelle1] as T1 inner join [t_AbgleichTabelle1] as T2 on T1.ID = T2.ID where [T2].[Geändert] = TRUE

Hinweis: Falls der SQL zu kompliziert ist, könnten Sie das auch über eine Access Abfrage/View der beiden Tabellen durchführen.
So kann über HASH Werte ermittelt werden ob sich Daten in seit einem letzten Datenexport geändert haben und nur diese geänderten Daten werden exportiert.

Siehe Beispiel "geänderte-datensätze-über-hash-werte.fhd" im Anhang


Schlusswort
Das hier beschriebene Vorgehen funktioniert nicht nur mit dem Access Adapter ! So können im Prinzip aus jeder Datenbank nur geänderte Datensätze exportiert oder aber weiterverarebeitet  z.B. aktualisiert werden.


Dateianhang:

Dateiname: nur-geaend...eren.zip
Dateigröße:50 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
  • Seite:
  • 1

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

Copyright © 2009-2020 by FlowHeater GmbH.
Alle Rechte vorbehalten.

Follow us on

twitter  facebook

YouTube

 de en