如何在PHP/SQL中同步外部产品提要和内部产品数据库


How to sync external product feed with internal product database in PHP/SQL?

我正在创建一个应用程序,每天向我们提供几个外部产品提要,并用提要填充我们的产品数据库。然而,诀窍是我们需要使产品数据库与最新的提要保持同步。

以前,我曾考虑过将数据库中的当前产品列表填充到数组中,并与最新的提要进行数组比较的理论,一旦产品数量达到数千,这种理论就被否决了。(试图获取5000条记录时内存不足)。

因此,经过一点研究,似乎解决方案可能在SQL方面,可能使用TRIGGERS。尽管我不太确定该怎么做,因此我提出了这个问题。

因此,我需要在同步过程中实现两个目标:

1) 插入数据库中不存在的新产品。我们可以使用INSERT IGNORE方法来实现这一点。

2) 在我们的数据库中查找最新提要中不存在的产品,并对它们采取措施。(标记为已删除,或移动到已删除的产品表等)

第二步是我遇到麻烦的地方。我现在想,也许对于每个同步操作,我们都会将最新提要中的产品插入"Temp products"表中,并以某种方式将"products table"与"Temp products"表进行比较,以查找需要标记为删除的记录。

有什么建议吗?

感谢

显然对这一点考虑过度了。Anigel怀疑并进一步实施的解决方案是创建一个临时表"products_temp"来存储新的提要。然后,我们运行一个简单的联接,以了解哪些产品在products表中,但不在"products_temp"中,因此表明零售商上的产品已售罄或删除。

然后,我们可以将查询结果标记为已删除/已售罄/做任何事情。

我使用的查询是:

SELECT products.sku_number, products_temp.sku_number FROM products LEFT OUTER JOIN products_temp ON products.`sku_number` = products_temp.`sku_number` WHERE  products_temp.sku_number IS null