我需要在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文件。时钟通过串行线连接到物理机。
答案 0 :(得分:0)
根据您的偏好和数据模型,有几种方法可以遮蔽这只猫。
请参阅以下包含示例的链接。他们中的大多数使用CTE
- 公用表表达式。您应该能够轻松地根据需要进行调整,然后安排脚本定期作为SQL Server作业运行。
1)Different strategies for removing duplicate records in SQL Server.
2)Using CTE to remove duplicate records