Sql server SSIS—是否有方法从平面表中筛选数据?

Sql server SSIS—是否有方法从平面表中筛选数据?,sql-server,csv,ssis,etl,flat-file,Sql Server,Csv,Ssis,Etl,Flat File,我有一个总分类账,从交易到个人日记账的预订。我正在制定一个流程,使用位于其他地方的表格和其他信息,从下到上重建这些预订。首先,我有一个SSIS包,它可以收集3-4个不同的“分区”数据 在一个例子中,有超过600k的线路,我最多需要50k。将600k加载到表中需要一些时间。我在想办法阻止这种情况发生。如果我在SQL Server中执行此操作,我会执行以下操作: SELECT * FROM C601 WHERE (COST_CENTER = 5U AND ACCOUNT = 1100001) OR

我有一个总分类账,从交易到个人日记账的预订。我正在制定一个流程,使用位于其他地方的表格和其他信息,从下到上重建这些预订。首先,我有一个SSIS包,它可以收集3-4个不同的“分区”数据

在一个例子中,有超过600k的线路,我最多需要50k。将600k加载到表中需要一些时间。我在想办法阻止这种情况发生。如果我在SQL Server中执行此操作,我会执行以下操作:

SELECT * FROM C601
WHERE (COST_CENTER = 5U AND ACCOUNT = 1100001)
OR (COST_CENTER = 5U AND ACCOUNT = 1300001)
我会有大约12-13个WHERE项目,但会减少到原来项目的10%。在加载SQL Server表之前,是否有一种方法可以过滤SSI中加载的平面文件,使其项目少得多,就像上面使用SQL一样?

使用条件拆分转换 第一次进近

添加一个类似的表达式:

[COST_CENTER] = "5U" && ([ACCOUNT] = 1100001 || [ACCOUNT] = 1300001)
第二次进近

或者,可以添加两个拆分表达式,如下所示:

COST_CENTER]!= "5U" || [ACCOUNT]!= 1100001


然后可以使用条件分割默认输出获得所需结果

您可以使用过滤器来过滤行,是的。整个文件仍然需要读取(您无法停止读取),但您可以使用拆分将您想要的行仅定向到目标源。这是一个作业过程还是一个定期过程?在第一个例子中,您可以使用Notepad++中的CSV/SQL过滤函数,该函数可通过plugin.Larnu获得-这是我在网上找到的唯一解决方案,也是我将要采用的方法,但希望有一种更简单的方法。你把所有你不关心的交易推到哪里?我对存储它们没有兴趣,因为它们只会在数据库中添加500万个事务,而不会影响我的业务。@Vaslo。。。您不需要指导您不想在任何地方进行的交易。基本上,它们可以在条件拆分中消亡;不使用的集合将被有效地丢弃。条件拆分通常用于过滤结果,可能比实际将数据“拆分”到多个目的地更为有效。此解决方案以及上面由每个人提供的解决方案都起到了作用。我没有意识到在条件拆分时该过程会快多少,使用这种方法可以大大加快该过程。
[COST_CENTER] != "5U" || [ACCOUNT] != 1300001