我过去创建过很多SSIS包,虽然这个包的需要与我写的其他包有点不同。
以下是业务需求的简要说明:
我们的终端上有一个小型数据库,来自第三方供应商,这需要在每晚被覆盖。
此数据的来源是来自第三方供应商的一堆平面文件(CSV)。
当前设置:我们截断了这个数据库的表,然后我们通过SSIS插入文件中的新数据。
问题:有时候文件无法到来,而且我们会截断旧数据,尽管我们没有新数据集。这使我们没有数据库,我们希望在昨天的数据上没有任何数据。
期望的解决方案:在截断当前数据之前,我想要某种机制来查看新数据是否真正存在(这些文件)。
我尝试了什么:我尝试从文件中捕获数据并将它们添加到ADO记录集中,并且仅在此部分成功时才继续。这对我来说似乎没有用,因为我在一个数据流中拥有所有数据捕获活动,而且我没有看到我重用该数据的方法。这样做对我来说似乎是浪费资源,让内存表只是坐在那里。
你在类似的情况下做了什么?
答案 0 :(得分:1)
答案 1 :(得分:0)
我环顾四周,发现有些人正在努力解决同样的问题,尽管他们都没有一个非常优雅的解决方案,我也没有。
我最终做的是为每个感兴趣的文件创建一个平面文件连接,并有一个任务计数记录并保存到变量。如果文件不存在,则程序包将失败,您可以在此时停止执行。有一些这些文件的实际数量对我来说很有意思,但在大多数情况下,我并不在意。如果您不关心计数是多少,您可以继续回收相同的变量;这将减少你的变量的创建(我需要31)。为了保留资源(读取:减少包执行时间),我排除了每个数据源中除一个列之外的所有列;它产生了巨大的变化。