【问题标题】:SSIS - Performing a Lookup on another Table to get Related ColumnSSIS - 在另一个表上执行查找以获取相关列
【发布时间】: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 命令组件仅用于更新/插入语句?

关于如何做的任何想法?

【问题讨论】:

  • 这是数据流还是控制流?
  • 抱歉来晚了,下面的例子。

标签: sql sql-server ssis


【解决方案1】:

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

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

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

图一:

图2:

图3:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多