1.It inserts all the records That Exist in Table A into Table B
ルックアップ変換を使用します。ソースはになりTable A
、ルックアップはになりTable B
ます。両方のテーブルの共通列をマップし、挿入に必要な列を選択します。ルックアップを使用OLEDB destination
し、ルックアップからの列をマップして、に挿入します。Table B
2.Update TABLE B if Same "Key" exsit in Both but Updated records in Table A
上記と同じロジック。使用する代わりにルックアップをOLEDB Destination
使用OLEDB Command
してから、更新sqlを記述します。
Update TableB
Set col1=?,col2=?....
列マッピングマップでは、lookup
この記事を
チェックしてくださいレコードが存在するかどうかを確認し、存在する場合は更新してください。
マージの使用:
MERGE TableB b
USING TableA a
ON b.Key = a.Key
WHEN MATCHED AND b.Col1<>a.Col1 THEN
UPDATE
SET b.Col1 = a.Col1
WHEN NOT MATCHED BY TARGET THEN
INSERT (Col1, Col2, col3)
VALUES (a.Col1, a.Col2,a.Col3);
でMergeSQLを実行できExecute SQL Task
ますControl Flow
アップデート :The Lookup transformation tries to perform an equi-join between values in the transformation input and values in the reference dataset.
必要なデータフロータスクは1つだけです。
ダイアグラム
ターゲットテーブルデータのソーステーブルに一致する値がない場合、ルックアップはターゲット行をoledb宛先にリダイレクトし、データをソーステーブルに挿入します(Lookup No Match Output
)
ターゲットテーブルの行がビジネスキーとソーステーブルで一致すると、一致した行がに送信されOledb Command
、Update SQLを使用して、ルックアップからのすべてのターゲット行がソーステーブルで更新されます。
これは単なる概要です。列の変更に関係なく行が一致するとソーステーブルが更新されるため、上記の設計には問題があります。上記の記事を参照するか、ssisでSCDコンポーネントを検索してみてください。
Update 2:
MERGE TableB b
USING TableA a
ON b.Key = a.Key
WHEN MATCHED THEN
UPDATE
SET b.Col1 = a.Col1
WHEN NOT MATCHED BY TARGET AND a.IsReady=1 THEN --isReady bit data type
INSERT (Col1, Col2, col3)
VALUES (a.Col1, a.Col2,a.Col3);