你可能会经常选择不同的应用程序去解决数据整合问题。关键是要确定哪些应用可以在给你带来足够功能的同时,成本较低。
例如,你面临着使用SQL Server Transact-SQL的BULK INSERT语句或BCP工具来往SQL Server中读取文本文件的工作,与SSIS相比,这样可以在成本较低的情况下满足数据读取功能的需求。当你有较小的数据集和简单的数据整合需求时,上述情况很可能发生,这时启动SSIS操作的开销就能抵消使用BCP或BULK INSERT所获得的性能收益。
帮助你做出正确的选择,我们把每一应用的主要功能组件列出来,以便你能够根据主要的需求做出相应的评价。例如,以下的使用指导可以帮助你在BULK INSERT/BCP或SSIS中做出选择。
◆BULK INSERT / BCP使用指导 – 当你的应用场景有以下的特征时,应该使用BULK INSERT / BCP:
◆有单一的数据源,并且是文件形式
◆有单一的目标,并且是SQL Server
◆没有数据转换的需求,比如直接从源读取到目标
◆没有工作流程管理,注意流程管理并不适合BULK INSERT,因为它只是一个将数据读取进SQL Server的单独操作
◆SSIS使用指导 - 当你的应用场景有以下的特征时,应该使用SSIS:
◆多个不同种类的数据源和目标
◆有数据转换需求:聚集,查询,创建新列
◆与其他的管理任务(如邮件或FTP)相结合
◆通过工作流程管理控制多个任务和转换的顺序
评估选择
根据使用指导,你可以更好的评估哪种应用选择更符合你的数据需求。
在文件读取的例子中,你的需求不仅仅是往SQL Server中读入5000000条记录,还包括对这些记录的数据聚集。考虑到这些需求,确认以下哪个方法可以完成这项任务。注意,这里仅仅列出两个可行的方法。
◆方案1 - BULK INSERT解决方案 – 你当然可以使用BULK INSERT去从源文件读取数据,并装载到SQL Server中。但是,你还需要增加额外的操作,在把数据装载到目标表前对其进行聚集。一种方法是使用BULK INSERT把数据放入一个暂时的表,然后使用Transact-SQL对暂时表中的数据进行聚集,再用Transact-SQL把数据读入目标表中。
◆方案2 – SSIS解决方案– SSIS提供了一站式的解决方案,你可以在聚集数据的同时将其装载到目标表中。并且,在SSIS中你还能添加工作流程来控制这些操作的顺序,甚至对执行过程进行日志,记录操作执行的过程,以及进行出错处理,找出不符合要求的记录。
当你对比上述两个方案时,SSIS解决方案可以不使用暂时表,并且把所有的数据读取逻辑和工作流程装入单一的SSIS包中。而对于方案1,你不仅需要使用Transact-SQL来对数据进行聚集,还需要把数据逻辑封装在一个存储过程中。所以,根据这一对比,SSIS解决方案是这一读取-聚集案例最优的选择,也就是可以提供足够的功能,并且有能力集中管理工作流程。
文章来源于领测软件测试网 https://www.ltesting.net/