将SQL进程转换为SSIS包

问题描述 投票:1回答:1

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

  1. drop table_A
  2. select into table_A from(select tableB union all select tableC union all tableD)key fators:table_B,table_C,table_D - 我需要从这三个表中的40列中拉出20列。列名称各不相同,我需要重命名和标准列名称和某些数据类型,以便它作为Table_A中的唯一列。

这已经在sql查询中设置了,但我需要知道什么是最佳实践以及如何将它们转换为SSIS?我应该使用“执行SQL任务”流程还是使用涉及oledb源和oledb目标的数据流任务?

sql-server visual-studio ssis etl sql-server-data-tools
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.