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

时间:2009-07-20 20:31:34

标签: sql sql-server ssis

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

例如:

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

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

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

关于如何做的任何想法?

1 个答案:

答案 0 :(得分:16)

实际上,这是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.
  8. 这就是全部。对于源中的每一行,name列将用于匹配查找表的name列。每个匹配都会将其id列作为新的lookupId列。所有三列都将前往目的地。

    图1:
    alt text

    图2:
    alt text

    图3:
    alt text