我已经阅读了类似问题的解决方案,但它们似乎都涉及脚本和额外的工具。我希望我的问题足够简单以避免这种情况。
所以用户上传下周数据的 csv。它被插入数据库,没问题。
但
一个小时后,他得到了每个人的反馈,并且必须做出相应的更新。他更新了 csv 并将其上传到数据库。
现在,我正在使用的系统检查该周的数据是否已经存在,如果存在,则从数据库中提取所有数据,脚本会找到差异并将它们发送出去,毕竟这样,旧数据的数据将被删除并用新数据替换。
显然,将其擦干净并重新输入数据要容易得多,但这不是最好的方法,尤其是在有大量更改或大量数据的情况下。但我必须知道为了发送警报做了哪些更改。但是我不想要事务日志,因为警报只需要发送一次,之后旧数据就没用了。
所以!
是否有一种聪明的方法可以将新数据与现有数据进行比较,仅获取已更改/删除/添加的行并进行这些更改?现在看来我可以进行更新,但是我不会就发生的变化得到任何回应...
谢谢!
快速编辑:
当前没有外键在使用。这很快就会改变,但不会有什么不同,因为外键只会指向数据影响的对象,因此不需要更改。就主键而言,这确实带来了一些困境:
有问题的数据是每个人的工作时间表。因此,每个班次都有一个密钥会很好(对于这个时间表的特定应用,而不是简单的输出)。但问题是,假设 user1 周一迟到了。迟到记录在一个单独的表中,并使用 shift 键与班次相关联。但是,如果在星期二需要对已经进行的一周进行一些更改,我担心要确保数据库中的所有条目已经发生(因此可能具有不应该发生的关联)将变得太困难被破坏)将在此过程中重新键入。不幸的是,它并不像只更新当前时间之后发生的所有事件那么简单,因为这会给上传的人增加工作量(从而使其不那么有市场)。基本上,他们在一个程序上制定时间表,将其导出为 CSV,然后将其上传到需要该数据的所有 Web 应用程序的网页上。因此,每次导出整个一周并上传它时,他们(并且对每个相关人员的压力都较小)执行相同的例程变得容易得多。
所以我最关心的是让上传脚本在两端尽可能智能。尝试查找更改不会变得臃肿,无论输入如何,它都可以找到更改,并且没有任何未更改的数据有被重新键入的风险。
这是一个相关的问题:
Suppose Joe User was schedule to wash dishes from 7:00 PM to 8:00 PM, but the new
data has him working 6:45 PM to 8:30 PM. Has the shift been changed? Or has the old
one been deleted and a new one added?
还有一个:
Say Jane was schedule to work 1:00 PM to 3:00 PM, but now everyone has a mandatory
staff meeting at 2:00 to 3:00. Has she lost one shift and gained two? Or has one
shift changed and she gained one?
我真的很想知道这种数据通常是如何处理/接近的,而不是上面的具体答案。
再次谢谢你。