将SQL进程转换为SSIS包

时间:2017-12-14 15:35:45

标签: sql-server visual-studio ssis etl sql-server-data-tools

我有一个包含200多行代码的SQL查询,其中包含以下步骤。我需要每天运行它并生成表A.我有一个新的要求,即使用相同的进程创建一个SSIS包并使用ssis创建tableA。以下详细信息是当前的SQL进程

  1. drop table_A
  2. 从中选择table_A(select tableB union all select tableC union all TableD) 关键因素:table_B,table_C,table_D - 我需要从这三个表中的40列中拉出20列。列名称各不相同,我需要 重命名和标准化列名和某些数据类型,以便它作为Table_A中的唯一列。
  3. 这已在sql查询中设置,但我需要了解最佳实践以及如何将它们转换为SSIS?我应该使用"执行SQL任务"流程 或使用涉及oledb源和oledb目的地的数据流任务?

1 个答案:

答案 0 :(得分:1)

执行SQL任务就是您想要的。执行SQL任务旨在运行可能会或可能不会返回结果集的任意查询。您已经完成了使代码正常工作的艰苦工作,因此您需要做的就是定义一个连接管理器(可能是一个OLE DB)并粘贴您的代码。

在这种情况下,SSIS将只是现有SQL进程的协调器/执行框架。作为一个写了超过一些SSIS软件包的人,这完全可以接受。

我发现,当您需要将表B,C和D中的数据移动到远程数据库中或者需要对它们执行转换逻辑时,数据流任务更为合适在TSQL中。

数据流任务不支持在运行时创建表。所有SSIS任务都执行验证检查 - 在程序包启动时或者可以延迟到特定任务开始。数据流任务将要执行的检查之一是#34;目标表是否存在(并且结构是否与我的缓存副本匹配)?"