0

例如,我有 2 个表 Employee 和 Department。像这样的查询

Select EmpID,Employee From dbo.Employee

Select DepID,DeptName From dbo.Department

我已经放置了 2 个 EXECUTE SQL 任务。

并希望将这些选择语句插入到某个目标表中。输出 :

ID  SQL_Stmt
1  Select EmpID,Employee From dbo.Employee
2  Select DepID,DeptName From dbo.Department

我的结构看起来像这样:

在此处输入图像描述

4

1 回答 1

1

很难说你在这里做什么,但是从 SELECT 语句和目标表布局来看,在我看来,将两个 SELECT 语句合并到一个 SELECT 语句中会更简单,该语句连接一个 ID 列要在目标表中,所以我假设 ID 也在源表中。

重要提示:如果 [dbo].[Employee] 和 [dbo].[Department] 之间没有关系(例如 ID),则不应将它们插入到同一个目标表中。您的表格不会被规范化,这很糟糕。

理想情况下,您的源查询将类似于

SELECT  Emp.EmpID
       ,Emp.Employee
       ,Dept.DeptName
       ,Dept.Department
FROM [dbo].[Employee] Emp 
INNER JOIN [dbo].[Department] Dept
ON Emp.ID=Dept.ID

此处结束 SQL 并开始 SSIS:
您需要在 SSIS 中创建数据流任务。
在数据流任务中,您需要一个 OLE DB 源和 OLE DB 目标任务。
打开 OLE DB 源任务并选择“数据访问模式”下拉菜单并将其更改为“SQL 命令”选项。
现在您可以编写 SQL 查询作为您将插入到目标表中的源。

SQL 查询

连接 OLE DB 源和 OLE DB 目标,然后从“表或视图的名称:”下拉菜单中选择目标表。
具有相同名称的列应该自动映射在一起,但您可能需要手动映射不相似的列。

您应该能够解决自己出现的任何其他错误。祝你好运!

TL;DR:您正在尝试在 SSIS 的控制流级别上实现某些目标,而这实际上应该在数据流级别上完成。

于 2018-11-08T20:02:49.537 回答