0

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

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

坏的:

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

如果 xml 不完全正确或脚本有问题怎么办?然后我们把数据吹掉了,暂时拿不到任何新的数据。

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

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

4

2 回答 2

1

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

创建转储->尝试{删除旧记录->创建新记录}捕获(将转储加载回数据库)

如果您使用 mySQL,可以在以下位置找到有关转储的更多信息:http: //dev.mysql.com/doc/refman/5.1/en/mysqldump.html

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

于 2013-07-18T16:38:37.213 回答
0

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

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

或者使用INSERT...on 重复键更新

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

如果您担心将错误的 XML 数据推送到您的数据库中,只需在将其推送到您的表之前验证您的所有数据,并且任何不应该进入的内容都会被跳过。

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

于 2013-07-18T16:49:01.483 回答