Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Mit der Freeware Version können bis zu 100.000 Datensätze verarbeitet werden!
Flowheater Chart

Nur geänderte Datensätze exportieren

Mehr
4 Jahre 1 Monat her - 4 Jahre 1 Monat her #4095 von Oliver Barz
Guten Morgen,

ich habe diese Doku gelesen https://flowheater.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
Letzte Änderung: 4 Jahre 1 Monat her von Oliver Barz.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 1 Monat her #4096 von FlowHeater-Team
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.275 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


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