将xml提要写入数据库,如何安全地删除旧记录并使用新记录进行更新


Writing xml feed to database, How do I safely delete old records and update with new?

我正在将XML提要中的信息写入数据库,以便在我们的网站上使用。我们发现xml提要可能不一致,所以将信息写入数据库对我们来说是一个很好的解决方案

理想情况下,我希望每天对一个文件进行一次cron,解析xml,然后将其写入数据库。我应该使用什么方法来消除前一天的数据,因为一旦我们对文件进行cron并使用新的每日记录进行更新,我就不再需要它了。

错误:

cron文件->删除旧记录->写入新记录

如果xml不太正确或者脚本有问题怎么办?然后我们销毁了数据,目前无法获得任何新数据。

如果XML信息不好,至少我可以在前端写一些php,仍然显示旧数据,但修改了日期或其他什么。

什么类型的检查和故障保险最适合我的应用程序?我需要每天更新记录,但只有在我确信我们有好的新数据要导入的情况下才能删除旧记录。

我建议以mysql转储的形式进行备份。从本质上讲,转储是数据库在给定时间的快照。因此,如果你开始这个过程,但出现了问题,你可以将其恢复到开始之前的状态。工作流程大致如下:

创建转储->try{删除旧记录->创建新记录}catch(将转储加载回数据库)

如果您正在使用mySQL,有关转储的更多信息,请访问:http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

大多数其他数据库也有某种形式的转储

通过将两个字段散列在一起为表创建一个guid——无论哪个字段在更新之间是持久的。例如,如果您正在更新库存,则可以使用分销商和sku作为guid的输入。

然后,当您更新时,只需使用mysqlREPLACE查询将旧数据交换为新数据。更换

或者使用INSERT。。。关于重复密钥更新

这样做的好处是,如果您的脚本由于某种原因失败,您可以安全地再次运行它,而不会将额外的行推入表中。

如果您担心坏的XML数据被推送到数据库中,只需在将其推送到表中之前验证所有数据,任何不应该进行的操作都会被跳过。

您可能想在脚本开始时进行sql备份,如果您的表真的搞砸了,您可以随时返回并恢复到安全的备份。