SSIS - 在另一个表上执行查找以获取相关列

Posted

技术标签:

【中文标题】SSIS - 在另一个表上执行查找以获取相关列【英文标题】:SSIS - Performing a Lookup on another Table to get Related Column 【发布时间】:2009-07-20 20:31:34 【问题描述】:

我想在SSIS中执行一个select语句,但是这个select语句从另一个组件中获取了一个参数,并且这个select语句的列必须作为其他组件的输入。

例如:

select id from myTable where name = (column from a previous component).

并且上面select语句的“id”内容应该是未来组件可以使用的列。

如果我添加一个“OLE DB 命令”组件,它允许我将其他组件作为输入引用,但我无法从中生成输出。似乎 OLE DB 命令组件仅用于更新/插入语句?

关于如何做的任何想法?

【问题讨论】:

这是数据流还是控制流? 抱歉来晚了,下面的例子。 【参考方案1】:

其实这就是 Lookup 的一个案例。看来您想按名称进行查找并返回 id。很简单。以下是我创建此示例的方法:

    将数据流任务拖到设计图面上。双击它可以切换到它。 为我的数据库创建连接管理器 拖到设计图面上: 一个 OLE DB 源 查找转换 一个 OLE DB 目标 将源连接到目标查找。这是我们想要到达目的地的“查找匹配输出”。见图 1。 配置源。我的源表只有 id 和 name 列。 配置查找 常规选项卡:使用 OLE DB 连接 连接选项卡:指定相同的连接,但使用查找表。我的查找表只有 id 和 name,但 name 是唯一的,因此作为查找列更有意义。 在列选项卡上,将名称配置为映射到名称,并将“id”作为输出。将查找操作配置为“添加新列”,并将该列命名为“lookupId”。见图 2。 忽略其他两个选项卡 将输出配置为采用所有三列。见图 3。

就是这样。对于源中的每一行,名称列将用于匹配查找表的名称列。每个匹配项都将提供其 id 列作为新的 lookupId 列。所有三列都将前往目的地。

图一:

图2:

图3:

【讨论】:

以上是关于SSIS - 在另一个表上执行查找以获取相关列的主要内容,如果未能解决你的问题,请参考以下文章

带有数值的 SSIS 查找不起作用

SSIS:特定查找的奇怪问题

C# EF 在另一个表中查找数据的最佳方法

SSIS 无法获取列值并将其设置为 NULL

SSIS包瓶颈插入记录

sql SQL查询SSISDB以查找与特定SSIS包相关的错误消息