M7 发帖数: 219 | 1 【 以下文字转载自 DotNet 讨论区 】
发信人: M7 (stay sharp), 信区: DotNet
标 题: Bulk merge?
发信站: BBS 未名空间站 (Wed Feb 20 17:42:15 2013, 美东)
我有很多rows(比如说10万条)要写进SQL server. 现在用的是DataTable.
WriteToServer(). 相当于bulk insert, 效率很高。
但是在一个比较少见的情况下,这10万条rows里面会有很多重复,也有可能全都是重
复的。DataTable.WriteToServer 报错primary key violation, 一次只说一条重复。
所以依照error message, 删除重复,再writeToServer的方法效率极低。
DataTable有没有类似bulk merge的操作?
如果没有bulk merge, 至少可以bulk insert到一个temp table, 然后再merge这个
template table to the real destination table. 但是这样分两步的操作,在绝大多
数的情况下(即没有重复的情况下),应该是降低了insert的效率。
有高人指点一下吗?多谢多谢! | e****7 发帖数: 4387 | 2 这个用ETL要简单得多了,SSIS里就可以Merge 了,不过听起来你的source data 里就
存在重复数据,所以在执行MERGE之前,数据需要用Aggregate (grouping)来清除重复
的数据。 | s**********o 发帖数: 14359 | 3 重复还要看是RECORD重复,还是PK的重复,如果只是PK重复,GROUP BY选哪一个还是很
麻烦,
垃圾进垃圾出,还是找DATA ANALYST把数据清理干净
【在 e****7 的大作中提到】 : 这个用ETL要简单得多了,SSIS里就可以Merge 了,不过听起来你的source data 里就 : 存在重复数据,所以在执行MERGE之前,数据需要用Aggregate (grouping)来清除重复 : 的数据。
|
|