SSIS - Aktualisierung einer Tabelle mit einem OLE DB-Befehl

Ich brauche die übersetzung der nächsten SQL-Abfrage in SSIS: (Jeder Tabelle gehören zu einer anderen Quelle - SQL-Server & ORACLE)

update A
set
A.col1 = B.col1
A.col2 = B.col1
from
table A inner join table B B on A.col3 = Col3
where
A.col4 = value 1 and
A.col5 = value2 and
B.col4 = value 3;

Wie Sie sehen können, Quell-und Ziel-entspricht der gleichen Quelle: Tabelle A. Dies ist der work-flow, die ich erstellt habe.

SSIS - Aktualisierung einer Tabelle mit einem OLE DB-Befehl

Nach der conditional split habe ich verwendet eine Abgeleitete Spalte, um kopieren Sie die Spalte B. Col1, um ihn auf den OLE DB-Befehl zum aktualisieren der Spalten der Tabelle Ein
Danach habe ich zu schreiben das nächste Stück der Abfrage in der OLE DB Command task:

update Table A
set
col1 = ?
col2 = ?

Aber an diesem Punkt habe ich eine Frage, Bin ich aktualisieren nur die Werte der Teilmenge, die ich bekam aus der bedingten split, oder bin ich die Aktualisierung alle Tabelle A. Außerdem wird der Letzte Teil der Update-Abfrage nimmt Bezug auf Tabelle B und in der OLE DB Command task kann ich als Referenz nur an einer Quelle von Daten.

Klarstellungen:
Der code ist nur ein schema, so benötige ich keine Korrektur, das ist nicht meine Frage (falls ich einen Fehler gemacht habe).

Wurde ich gebeten, zu machen, diese übersetzung, ohne änderungen an der sql-Abfrage.

Wenn Sie brauchen, um mehr zu wissen, zu helfen, bitte Fragen Sie, aber höflich.

Hinsichtlich

wenn Sie nicht über eine WHERE-Klausel, aktualisieren Sie die gesamte Tabelle. Auch wenn es in einem Datenfluss-Aufgabe.
Das ist genau mein Punkt-Registerkarte, wie kann ich schreiben Sie die Klausel where, wenn ich zwei verschiedene Quellen der Informationen, die in der OLE DB-Befehl?
Nur ein heads-up dieses wird nicht in einer set-basierte update. Es wird Zeile für Zeile und wird unglaublich langsam. Du bist besser dran, dumping, werden die Informationen in eine staging-Tabelle und dann ausführen einer update-Anweisung in einer Task SQL Ausführen.
Nicht möglich für für, ich kann nicht erstellen Sie eine neue Tabelle in der Datenbank, das ist, warum ich Frage.
Wenn Ihre Frage beantwortet wurde, können Sie schließen Sie durch Klick auf das Häkchen neben dem Antwort?

InformationsquelleAutor d2907 | 2015-02-06

Schreibe einen Kommentar