ホームページ > データベース > mysql チュートリアル > 取得したデータに基づいて SSIS で複数のデータベースをクエリする方法は?

取得したデータに基づいて SSIS で複数のデータベースをクエリする方法は?

DDD
リリース: 2024-12-20 15:51:09
オリジナル
179 人が閲覧しました

How to Query Multiple Databases in SSIS Based on Retrieved Data?

取得したデータに基づく複数のデータベースのクエリ

SSIS では、多くの場合、1 つのデータベースからデータを取得し、そのデータを使用してクエリを実行する必要があります。別のデータベース。これは、いくつかの方法で実現できます。

方法 1: ルックアップ変換

ルックアップ変換を使用すると、2 番目のデータベースからデータを取得し、データ ストリームに追加できます。 。ただし、本質的には取得したデータに基づいて行をフィルター処理するわけではありません。

ルックアップ変換を使用して行をフィルターするには、ルックアップ プロセス中にエラーを処理します。エラー処理を行を無視するように設定し、条件分割を使用して、追加された列内の NULL 値を含む行を削除できます。あるいは、エラー処理を行のリダイレクトに設定して、すべての行をエラー出力行にルーティングし、フィルター処理することもできます。

方法 2: スクリプト タスク

の場合より選択的なデータ取得の場合は、スクリプト タスクの使用を検討してください:

' Get the list of IDs from the first database
Dim lst As New Collections.Generic.List(Of String)
Dim myADONETConnection As SqlClient.SqlConnection = _
    DirectCast(Dts.Connections("TestAdo").AcquireConnection(Dts.Transaction), _
    SqlClient.SqlConnection)
myADONETConnection.Open()

Dim myADONETCommand As New SqlClient.SqlCommand("Select [ID] FROM dbo.MyTable", myADONETConnection)
Dim dr As SqlClient.SqlDataReader
dr = myADONETCommand.ExecuteReader

While dr.Read
    lst.Add(dr(0).ToString)
End While

' Construct the query for the second database
Dts.Variables.Item("User::MyVariableList").Value = "SELECT ... FROM ... WHERE ID IN(" & String.Join(",", lst) & ")"
ログイン後にコピー

"User::MyVariableList" 変数を後続のデータ取得のソースとして使用します。

方法 3: SQL タスクを実行

別のアプローチは、SQL タスクを実行することです:

  • SQL 実行タスクで、ResultSet を Single に設定し、Result Set を に設定します。 User::MyVariableList.
  • 次の SQL コマンドを使用します:
DECLARE @str AS VARCHAR(4000)
SET @str = ''
SELECT @str = @str + CAST([ID] AS VARCHAR(255)) + ','
FROM dbo.MyTable
SET @str = 'SELECT * FROM MySecondDB WHERE ID IN (' + SUBSTRING(@str,1,LEN(@str) - 1) + ')'
SELECT @str
ログイン後にコピー

これにより、取得された ID を IN 句に含む SQL クエリが生成されます。出力を User::MyVariableList 変数に割り当て、2 番目のデータベースからデータを取得するための OLEDB ソースとして使用します。

以上が取得したデータに基づいて SSIS で複数のデータベースをクエリする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート