【发布时间】:2019-12-19 07:53:07
【问题描述】:
我有一个总分类帐交易记录到单个日记帐预订。我正在制定一个流程,使用位于其他地方的表格和其他信息自下而上重建这些预订。首先,我有一个 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 表之前过滤 SSIS 中加载的平面文件,并像上面的 SQL 一样使用更少的项目?
【问题讨论】:
-
您可以使用Conditional Split Transformation 过滤行,是的。整个文件仍然需要读取(您不能停止读取),但您可以使用拆分仅将您想要的行定向到目标源。
-
这是一项工作还是一个周期性的过程?首先,您可以在 Notepad++ 中通过插件使用 CSV/SQL 过滤器函数。
-
Larnu - 这是我能在网上找到的唯一解决方案,也是我打算采用的方法,但希望有更简单的方法。您将所有您不关心的交易推送到哪里?我对存储它们没有兴趣,因为它们只会在数据库中增加 500 万不影响我的业务的事务。
-
@Vaslo... 您无需在任何地方引导您不想要的交易。从本质上讲,他们可以在条件分裂中死亡。
-
如果您对条件拆分产生的流之一做某事,SSIS 会很高兴;您不使用的集合将被有效地丢弃。条件拆分通常用于过滤结果,可能比实际将数据“拆分”到多个目标更重要。
标签: sql-server csv ssis etl flat-file