首页 > 数据库 > mysql教程 > 如何根据检索到的数据在SSIS中查询多个数据库?

如何根据检索到的数据在SSIS中查询多个数据库?

DDD
发布: 2024-12-20 15:51:09
原创
209 人浏览过

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

根据检索到的数据查询多个数据库

在SSIS中,经常需要从一个数据库检索数据并使用该数据进行查询另一个数据库。这可以通过多种方法来实现:

方法 1:查找转换

查找转换允许您从第二个数据库检索数据并将其添加到数据流中。但是,它本质上不会根据检索到的数据过滤行。

要使用查找转换过滤行,请在查找过程中处理错误。您可以将错误处理设置为忽略行,并使用条件拆分来删除添加列中具有空值的行。或者,您可以将错误处理设置为重定向行,将所有行路由到错误输出行,然后可以对其进行过滤。

方法 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”变量分配为

方法三:执行 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
登录后复制

这会生成一个 SQL 查询,其中在 IN 子句中包含检索到的 ID。将输出分配给 User::MyVariableList 变量,并将其用作 OLEDB 源,以便从第二个数据库检索数据。

以上是如何根据检索到的数据在SSIS中查询多个数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板