Announcement

Collapse
No announcement yet.

SSIS von einer sql Abfrage in eine Tabelle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SSIS von einer sql Abfrage in eine Tabelle

    Hallo zusammen,
    ich benutze zum ersten mal den SSIS vom SQL Server 2005.
    Nun meine Frage:

    Ich habe eine SQL die über mehrere Tabellen geht.
    Nun habe ich eine neue Tabelle angelegt wo das Ergebniss hinein soll.

    Das funktioniert auch recht gut, nun möchte ich aber das nur noch die Neuen Datensätze aus der SQL einfliessen lassen, die man über eine ID abfragen kann.

    Nur wie kann ich das im SSIS realisieren.

    Bin für jede Hilfe dankbar.

    MFG Bodo

  • #2
    Hallo,

    wenn im SSIS-Paket ein Execute SQL Task ausgeführt wird, legt die Formulierung der SQL-Anweisung das Verhalten fest. Die SSIS führen diese Anweisungen nur aus.

    Ein Beispiel, das nur die neuen Datensätze in die Tabelle einfügt, könnte so aussehen (die Spalte recid ist jeweils der Primärschlüssel der Tabelle):

    <div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt;"><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>ZielDB.dbo.TestTbl</p><p style="margin: 0px;">&nbsp; (wert,status) </p><p style="margin: 0px;"><span style="color: blue;">SELECT </span></p><p style="margin: 0px;">&nbsp;&nbsp; wert,status</p><p style="margin: 0px;"><span style="color: blue;">FROM </span></p><p style="margin: 0px;">&nbsp; QuellDB.dbo.TestTbl Q</p><p style="margin: 0px;"><span style="color: blue;">WHERE </span></p><p style="margin: 0px;">&nbsp; <span style="color: blue;">NOT EXISTS </span>(<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span>ZielDB.dbo.TestTbl Z <span style="color: blue;">WHERE </span>Z.recid = Q.recid)</p><p style="margin: 0px;">GO</p></div>

    Comment


    • #3
      Hallo,
      danke für die schnelle Antwort.!

      Ich habe vergessen zu sagen das die Quelle über ein Verbindungsserver (Oracle)
      verbunden ist und in MS SQL 2005 fliesst.

      Wenn ich nun den Insert starte bekomme ich nach 60000 Datensätze ein Fehler der sagt es währe ein Doppelter Schlüssel gefunden worden.
      Es ist aber definitiv nicht der Fall.

      Die Anzahl der gesamten Datensätze liegt bei ca. 200 000 Datensätze.

      Hier mal meine SQL

      Code:
      insert into dbo.zTabelle
      	(id_nr,Datum,kunr)
      SELECT	  ak.id_nr as ID_ORG,
      		ak.DATUM AS Datum,
      		ak.kunr as Kundennummer
       FROM QTabelle..DBO.ATabelle, QTabelle..DBO.BTabelle ak, QTabelle..DBO.CTabelle ar
       WHERE a.artnr = ar.artnr
         AND a.aufnr = ak.aufnr
         AND a.mandant = ar.mandant
        AND NOT EXISTS (Select * from dbo.ZTabelle where id_nr = ak.id_nr)
      Was mache ich falsch.?
      Danke
      MFG bodo

      Comment


      • #4
        Hallo,
        nur eine Grobe Vermutung, hier kommt die id_nr zweimal vor ! Teste mal folgenden Select:
        Select id_nr, count(*) as Anzahl from (

        SELECT ak.id_nr as ID_ORG,
        ak.DATUM AS Datum,
        ak.kunr as Kundennummer
        FROM QTabelle..DBO.ATabelle, QTabelle..DBO.BTabelle ak, QTabelle..DBO.CTabelle ar
        WHERE a.artnr = ar.artnr
        AND a.aufnr = ak.aufnr
        AND a.mandant = ar.mandant
        AND NOT EXISTS (Select * from dbo.ZTabelle where id_nr = ak.id_nr)
        ) as x
        group by id_nr
        having count(*) > 1

        Dieser sollte Dir sagen, welcher Datensatz doppelt ist!

        Gruß
        Thomas

        Comment


        • #5
          Danke Thomas,
          du hattest recht ... .

          Gruß
          Bodo

          Comment

          Working...
          X