C# 如何将平面文件中的一行接一行插入OLEdb Destination db?
我有一个平面文件,其中有许多行和列由分隔符(|)分隔。在将行插入目的地之前,我必须通过匹配一些列来检查记录是否已经存在,如果存在,我必须只向该记录中添加金额字段值,然后它必须进入下一行进行插入C# 如何将平面文件中的一行接一行插入OLEdb Destination db?,c#,sql-server,ssis,C#,Sql Server,Ssis,我有一个平面文件,其中有许多行和列由分隔符(|)分隔。在将行插入目的地之前,我必须通过匹配一些列来检查记录是否已经存在,如果存在,我必须只向该记录中添加金额字段值,然后它必须进入下一行进行插入 Flat file row: Row1= 100|10.35|abc|10/2018 Row2= 100|15.35|abc|10/2018 Row3= 101|20.00|xyz|10/2018 我尝试了查找转换,然后我意识到只有当表已经有记录时匹配用例才有效,如果表是空的,我们就不能进行查找,因为平
Flat file row:
Row1= 100|10.35|abc|10/2018
Row2= 100|15.35|abc|10/2018
Row3= 101|20.00|xyz|10/2018
我尝试了查找转换,然后我意识到只有当表已经有记录时匹配用例才有效,如果表是空的,我们就不能进行查找,因为平面文件记录以批方式插入。如果表是空的,则整行没有匹配的大小写,然后插入所有行。但我必须对平面文件记录进行过滤,以便在插入前对每一行进行过滤
Flat file row:
Row1= 100|10.35|abc|10/2018
Row2= 100|15.35|abc|10/2018
Row3= 101|20.00|xyz|10/2018
要加载到oledb dest db中的目标
Row1= 100|25.70|abc|10/2018 (25.70 == Row1 amount + Row2 amount)
Row3= 101|20.00|xyz|10/2018`enter code here`
我将使用聚合转换
你可以在SSIS中做各种事情,但我不会。就我个人而言,我总是将整个文件加载到一个暂存表中,然后在sql查询中执行其余操作。我发现更容易验证我是否将整个文件放入了sql,并且发现这样管理起来更容易。当然SSIS的粉丝可能不同意,所以我会等待第二个意见!我会将整个数据加载到一个临时表(可能使用SSIS包),然后将信息分组并插入到其最终目的地,最后删除/清除临时表。我认为添加unique(复合作为检查多列)约束可以做到这一点。首先在表中必要的列上添加约束,然后从平面文件中插入批量行。尝试插入时,第二行和以后的重复行应自动失败。请使用AggregateTransformation@Yahfoufi。谢谢你的建议。聚合就是它的工作方式。非常感谢@KeithL,我已经测试了聚合tranf。在我的电脑。它的工作很好,同样我将申请在我的项目