Nur neu hinzugekommene Datensätze übertragen



  • hy
    ich habe ein tool geschrieben, welches mir datensätze einer ms sql datenbank in eine accessdatenbank überträgt!
    nun, da es in der ms sql datenbank mehrere zehntausend datensätze sind, sollten immer nur die neu hinzugekommenen datensätze übertragen werden.

    wie könnte ich das lösen?
    hat jemand eine idee? 🙂

    gruss



  • aus ausgewählten Feldern eigenen Schlüssel bilden und jeweils beim nächstem Auslesen überprüfen

    Für die mickrige Anzahl dürfte die Lösung genügen.



  • Für einen SQL-Server mag das eine mickrige Datenmenge seine, aber bei Access bin ich mir da nicht sicher...

    Es werden keine Datensätze modifiziert?

    Kannst Du mal die Datenstruktur aus der Tabelle auf dem SQL-Server posten?



  • Ich meine auch, dass man die Tabelle kennen muss.
    Am einfachsten wäre es, wenn du in der Tabelle eine laufende Nummer hättest. So was wie ne fortlaufende Artikelnummer.
    Dann könntest du dir immer den letzten Datensatz merken und genau da wieder ansetzen.



  • jo, ich weiss das es mit einer einmanligen id, welche fortlaufend ist, am einfachsten wäre, jedoch verfügen die tabellen (meist) über keine eindeutigen werte!

    ich habe es nun mal so gemacht, dass ich schauen gehe, wieviele datensätze ich in der access tabelle habe, und nacher wieviele ich in der sql tabelle habe auf dem server. gibt es eine differenz, übertrage ich die neuesten datensätze. also eifach so viele wie die differenz gegeben hat.
    jedoch hat diese variante einen riesen nachteil. wird in der accesstabelle einen oder mehrere datensätze gelöscht, so hat man danach mehrfachvorkommente datensätze 🙄

    gruss



  • ... dein Tool muss in beide Richtungen anwendbar sein
    1.neue Datensätze in der Quelle identifizieren
    2.überflüssige Datensätze im Ziel identifizieren

    Danach muss, je nach Ergebnis der Copy und/oder Löschvorgang gestartet werden.



  • Mit INSERT INTO ... SELECT nur Datensätze kopieren, die vom Datum her als neu anzusehen sind. Beim auslösen einer Exception (Ziel-Datensatz) schon vorhanden ein DELETE absetzen.



  • "Beim Auslösen einer Exception (Ziel-Datensatz) schon vorhanden ein DELETE absetzen." ... aber auch wenn es den Quelldatensatz schon nicht mehr gibt, er aber immer noch im Ziel (Access-DB) steht.

    "Mit INSERT INTO ... SELECT nur Datensätze kopieren, die vom Datum her als neu anzusehen sind" .... oder nach anderen Kriterien (temporäre Schlüsselbildung aus ausgewählten Feldern) als "Hinzugekommen" eingestuft werden können



  • "Beim Auslösen einer Exception (Ziel-Datensatz) schon vorhanden ein DELETE absetzen." ... aber auch wenn es den Quelldatensatz schon nicht mehr gibt, er aber immer noch im Ziel (Access-DB) steht.

    "Mit INSERT INTO ... SELECT nur Datensätze kopieren, die vom Datum her als neu anzusehen sind" .... oder nach anderen Kriterien (temporäre Schlüsselbildung aus ausgewählten Feldern) als "Hinzugekommen" eingestuft werden können


Anmelden zum Antworten