Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 反映两个数据集之间的记录删除/添加_Mysql_Differential Execution - Fatal编程技术网

Mysql 反映两个数据集之间的记录删除/添加

Mysql 反映两个数据集之间的记录删除/添加,mysql,differential-execution,Mysql,Differential Execution,我目前有一个3m记录表,需要每晚更新。 填充此表的数据来自约100个API,所有API都被标准化为一个巨型表 问题: 如何在源位置反映添加的新记录和删除的记录 事实: 我不能每天晚上都把桌子截断再插进去。 每个API为每个记录提供一个常量ID(这样我就可以跟踪记录内容)。 一些字段将每晚更新 解决方案: 新记录很容易,我只需将它们添加到我的表中,并带有一个可用的起始日期。 更新也很容易,对于每个记录,我都会检查它是否存在,以及数据是否发生了变化(性能会很差) 被删除的记录是我被卡住的地方。 AP

我目前有一个3m记录表,需要每晚更新。 填充此表的数据来自约100个API,所有API都被标准化为一个巨型表

问题: 如何在源位置反映添加的新记录和删除的记录

事实: 我不能每天晚上都把桌子截断再插进去。 每个API为每个记录提供一个常量ID(这样我就可以跟踪记录内容)。 一些字段将每晚更新

解决方案: 新记录很容易,我只需将它们添加到我的表中,并带有一个可用的起始日期。 更新也很容易,对于每个记录,我都会检查它是否存在,以及数据是否发生了变化(性能会很差)

被删除的记录是我被卡住的地方。 API只是向我转储了大量数据,我如何判断记录是否已“丢失”


我在考虑某种类型的交换表-有什么想法吗?

如果判断某个记录是否已被删除的唯一方法是检查api是否再次提供该记录,而不知道您要查找的确切记录,则需要跟踪iPort。如果始终执行完全导入:

解决方案1:

为数据库中的每一行设置一个标志,然后导入并更新您获得的每一行的标志,然后删除所有未更新的内容

解决方案2: 为每次导入设置导入ID(绑定到日期?),并将其写入数据库条目。所以您知道哪一行来自哪一个导入。使用最新导入的导入id覆盖现有数据。 然后,只能使用上次导入的数据


但是如果你总是进行完整导入,那么在之前删除所有内容应该会更快,不是吗?

谢谢,我选择了第一种解决方案。解决方案2可能更整洁(我可以使用stats等创建导入对象),但我添加了一个lastdowated列。然后,一个单独的过程清除旧行。完全导入将销毁在别处引用的表ID。