每天,我们都会收到来自不同供应商的不同格式(CSV、XML、自定义)的巨大文件,我们需要将这些文件上传到数据库中以进行进一步处理。
问题是这些供应商将发送其数据的完整转储,而不仅仅是更新。我们有一些应用程序,我们只需要发送更新(即仅发送更改的记录)。我们当前所做的是将数据加载到临时表中,然后将其与以前的数据进行比较。由于数据集巨大并且我们偶尔会丢失 SLA,因此速度非常慢。
有没有更快的方法来解决这个问题?任何建议或帮助都非常感激。我们的程序员已经没有想法了..
有多种模式可用于检测增量,即完整转储数据集中的更改记录、新记录和删除记录。
我见过的更有效的方法之一是创建已有数据行的哈希值,在导入进入数据库后创建哈希值,然后将现有哈希值与传入哈希值进行比较。
主键匹配+哈希匹配=未更改的行
主键匹配 + 哈希不匹配 = 更新的行
传入数据中的主键但现有数据集中缺少主键 = 新行
主键不在传入数据中,而是在现有数据集中 = 已删除行
哈希的方式因数据库产品而异,但所有主要提供商都提供某种类型的哈希。
优点在于只需比较少量字段(主键列和哈希),而不是逐个字段进行分析。即使很长的哈希值也可以很快地被分析。
它需要对导入处理进行一些返工,但所花费的时间将在提高处理速度方面一次又一次地得到回报。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)