0

私はSSISにかなり慣れていません...だからここに私の問題文があります-私は次のことを行うパッケージを作成したい..

1) 1000 個の ID (主キー) のセットを 100 個のセット、つまり 100*10 に分割するには 2) 毎回取得した 100 個の値を変数「X」に動的に入力する必要があります 3) この変数を where で使用したい節で

例: 主キーとして 'ID' を持つ表 Students があります。また、'ID' 列を持つ表 Rank_Holders もあります select * from Rank_Holders where ID in (?) is what I want to do . ? マップされた変数を示します-これには、学生からの ID のリストが必要です。

実際には、SQL Server の 1 つのテーブルと Oracle のもう 1 つのテーブルがここに大規模なデータベースがあり、ID 列の数が 30000 を超えているため、チャンクに分割して Where in 句にフィードする必要があります

ステップバイステップのパッケージ作成プロセスは本当に役に立ちます。同じことを手伝ってください。

4

1 に答える 1

0

ウェルカムニューカマー!あなたが SSIS にかなり慣れていないことに気付いたので、理想的ではありませんが、問題の説明はかなり説明的であると言わなければなりません。問題全体を数行で説明するのは非常に困難です。

「ステップバイステップ」の部分を自分で理解できると確信しています。私はあなたにいくつかの一般的な考えを与えようとしています。

  1. 主キーは、連続している場合とそうでない場合があります。もしそうなら、あなたは幸運です。そうでない場合は、ROW_NUMBER() を使用する必要があります。例:

DECLARE @lower int = 10; DECLARE @upper int = 15;

--DECLARE @CETList varchar(3000); -- この I am putti

WITH サブセット AS ( SELECT ROW_NUMBER() OVER (ORDER BY RecordID) AS RowNumber , RecordID FROM #A )

--SELECT @CETList = COALESCE(@CETList + ',', '') + CAST(RecordID AS varchar) --FROM サブセット --WHERE RowNumber BETWEEN @lower AND @upper;

--SELECT @CETList; --PRINT @CETList;

SELECT * From UserAudit where RecordID in (SELECT RecordID FROM subset WHERE RowNumber BETWEEN @lower AND @upper );

繰り返しますが、これはまだ完全な解決策ではありません。参考にしてみてください。コメントセクションよりも多くのスペースが必要なので、これを回答セクションに入れています。

于 2013-06-14T15:46:19.623 に答える