在Sql Server / Compact Edition中定期删除重复的记录

时间:2014-01-09 22:31:45

标签: sql-server xml ssis entity-framework-5

我需要在sql server实例或我的本地压缩版测试数据库中删除作为维护任务的重复记录。
因为,我有一个工具可以读取输出工作人员登记/退出工作日的时钟设备。我将读取数据导出为Xml文件作为备份,并将解析后的对象插入数据库。
因此,每天都有很多记录要插入,我希望以最佳方式完成,而不必每次需要插入时都检查数据库中存在的其他值。 你给我什么建议?

我正在使用Entity Framework 6

我是否需要处理EF和Linq以管理重复项和SqlBulkCopy?
我是否在Sql Server中创建临时表? 我是否创建了一个这样做的Sql存储过程? 我是否使用SSIS(我是新手)来导入Xml文件?

我有两张桌子:

-Clock(Id,Name,Location)
-Stamp(Id,ClockId,WorkerId,StartDate,EndDate, State

:评估参加开始/结束的工人协助(在正常工作日: 8.00am-5.00pm )。

-BadStart
-BadEnd
- 关键(开始/结束可通过的范围)
- 等待(尚未处理和规范化的人)

如何处理数据:

2个时钟单位(每个都创建自己的邮票,但工人可以在其中任何一个办理登机手续/办理登记手续)

- 从设备读取时钟数据(其他应用程序执行此操作,物理机具有运行读取时钟单元设备的脚本的计划任务。输出:Xml文件)
-Parse Xml文件(兼容性问题:人力资源部门有其他应用程序以特定格式读取它)
- 根据一些规范化规则在数据库中插入/更新记录
正如您所看到的,该表不能具有唯一字段,因为同一个工作人员可以多次签入/签出(错误地,通过确认,通过其他时钟)并且所有这些戳记必须在当天统一/标准化当然。
每次运行解析器时都会创建重复项,该解析器读取目录中的所有Xml文件并将其插入数据库中。 我没有权限修改物理机目录层次结构 因此,我正在寻找更好的策略来分类,存储和删除冗余记录。

应该每天执行任务,并从特定目录中的每个时钟单元创建几个Xml文件。时钟通过串行线连接到物理机。

1 个答案:

答案 0 :(得分:0)

根据您的偏好和数据模型,有几种方法可以遮蔽这只猫。

请参阅以下包含示例的链接。他们中的大多数使用CTE - 公用表表达式。您应该能够轻松地根据需要进行调整,然后安排脚本定期作为SQL Server作业运行。

1)Different strategies for removing duplicate records in SQL Server.
2)Using CTE to remove duplicate records