1

Oracle に A という名前のソース テーブルがあります。最初にテーブル A をテーブル B にロード (コピー) し、次にテーブル A に対して Insert 、Delete 、Update のように DML を操作します。

それを表 B にどのように反映させるか? ターゲット テーブルに余分な列を作成せずに。行のタイム スタンプは使用できません。

ソースとターゲットの行を比較する必要があります

例: 行がソースで削除された場合、ターゲットで削除する必要があります。行が更新された場合はターゲットで更新し、ソースで使用できない場合はターゲットに挿入します。

助けてください !!

4

2 に答える 2

1

A と B をソースとして使用します。

Joiner を使用して完全外部結合を実行します (または、両方のテーブルが同じデータベースにある場合は、Source Qualifier で結合できます)。

式では、次のシナリオに基づいてフラグを作成します。

  1. キー フィールドは null => flag='Delete' です。
  2. B キー フィールドが null => flag='Insert',
  3. A と B の両方のキー フィールドが存在します - A と B の非キー フィールドを比較し、いずれかのフィールドが等しくない場合は、フラグを「更新」に設定し、それ以外の場合は「変更なし」に設定します

Update Strategy を使用して適切な関数を適用した後、レコードを target(B) に送信できるようになりました。

于 2015-07-09T19:18:36.263 に答える