Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Flag nach Export setzen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ewc1111, 26 Januar 2016.

  1. ewc1111

    ewc1111 Benutzer

    Hallo, ich habe folgende Aufgabe bekommen und hänge jetzt fest: Es sollen täglich mehrmals Daten exportiert werden in ein flatfile welches dann extern weiterverarbeitet wird. Das funktioniert auch soweit und ich realisiere das ganze über den SSIS (SQL Server 2012). Nur jetzt kommts: Wie kann ich einen Flag oder Kenner setzen in der Datenbanktabelle nach einem Export so das dieser Datensatz nicht ein weiteres Mal exportiert wird. Hat jemand eine Idee ?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Einfach ein Feld anfügen und dieses setzen?

    War jetzt schwer, oder?
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich habe SSIS leider nur mal oberflächlich verwendet, vieleicht unterstützt das die Ausführung von SQL Statements nach dem export? Es müsste natürlich sichergestellt sein, das die Tabelle nicht während oder nach dem Export und vor Ausführung des Statements verändert wurde.
     
  4. ewc1111

    ewc1111 Benutzer

    Jepp genau das ist mein Problem. Das Feld in der Datenbanktabelle anfügen wie akretschmer oben schreibt ist klar. Aber es kommen eben immer neue Datensätze hinzu. Da kann es auch sein während eines Exports das neue geschrieben werden. Ich dachte evtl. auch eine temporäre Tabelle die die Daten abgleicht ? Aber dazu fehlen mir noch entsprechende Kenntnisse wie ich da am besten vorgehen kann.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Kann mssql sowas wie folgt?

    Code:
    tes
    test=# select * from foo;
     id | flag
    ----+------
      1 | f
      2 | f
      3 | f
      4 | f
      5 | f
      6 | f
      7 | f
      8 | f
      9 | f
     10 | f
    (10 rows)
    
    Nun z.B. in einem Rutsch alle mit id < 8 abfragen und das Flag setzen:

    Code:
    test=*# with export as (update foo set flag = true where id < 8 and not flag returning *) select * from export;
     id | flag
    ----+------
      1 | t
      2 | t
      3 | t
      4 | t
      5 | t
      6 | t
      7 | t
    (7 rows)
    
    Das kannst nun exportieren, in der foo steht nun:
    
    [code]
    test=*# select * from foo;
     id | flag
    ----+------
      8 | f
      9 | f
     10 | f
      1 | t
      2 | t
      3 | t
      4 | t
      5 | t
      6 | t
      7 | t
    (10 rows)
    

    Damit siehst nun auch, was schon exportiert wurde.
     
  6. ukulele

    ukulele Datenbank-Guru

    Was passiert denn wenn Datensätze während des Exports verändert werden, führt SSIS erst den Export durch und dann die Änderungen?

    Du hast viele Möglichkeiten aber in jedem Fall muss SSIS entweder selbst während oder nach dem Export tätig werden oder du musst den Export über ein Script starten das im Anschluss die Markierung setzt. Der Rest ist ausprobieren...
     
  7. ewc1111

    ewc1111 Benutzer

    Das müsste ich mal ausprobieren ob MS das so in etwa kann. Danke erstmal für Deine Bemühungen ;-)
     
  8. ewc1111

    ewc1111 Benutzer

    SSIS wird das einfach ignorieren und exportieren ;-) Ich vermute stark das ich hier mit einem Tabellenvergleich arbeiten muss um den Flag zu setzen. Danke erstmal, ich versuche mich mal da durchzuhangeln :)
     
  9. in ssis kannst du dir eine Variable erstellen, holst dir alle ID die du exportierst, dann über einen forech ein Update statement setzten.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden