同様の列を持つ 2 つの OLEDB データ ソースがあります。
TMP_CRUZTRANS
-------------
CUENTA_CTE numeric (20,0)
TMP_CTACTE_S_USD
----------------
CON_OPE numeric(20,0)
この 2 つのテーブル間で同様の値をすべて減算し、異なる行を保持する必要があります。NOT IN
SQLクエリで通常使用される制約を実行できるSSIS内の変換/タスクはありますか?
現在、Execute SQL Task
onを使用してこの操作を実行していControl Flow
ます。
一番上のデータ フローはTMP_CRUZTRANS
、2 番目のテーブルで異なる値を保持する必要がある最初のテーブル (他の 2 つのテーブル間のマージ結合... しかし、それは私の質問にとって重要ではないと思います) を作成します。
にExecute SQL Task
は、次のステートメントがあります。
INSERT INTO [dbo].[TMP_CYA]
SELECT RUT_CLIE, CUENTA_CTE, MONTO_TRANSAC
FROM [dbo].[TMP_CRUZTRANS]
WHERE CUENTA_CTE NOT IN (SELECT CON_OPE FROM TMP_CTACTE_S_USD)
最後に、新しいテーブルTMP_CYA
を使用して作業を続行できます。
このアプローチの問題は、TMP_CRUZTRANS
500 万行ほどあるため、SQL 実行タスクを使用してこのすべてのデータをテーブルに挿入するのが非常に遅いことです。この操作を実行するには、約 5 時間かかります。そのため、データ フロー タスク内でこれを行う必要があります。