我正在将XML Feed中的信息写入数据库,以便在我们的网站上使用。我们发现xml提要可能不一致,因此将信息写入数据库对我们来说是一个很好的解决方案。
理想情况下,我希望每天解析一次文件,解析xml然后将其写入数据库。我应该使用什么方法来消除前一天的数据,因为我们在完成文件并使用新的每日记录更新后不再需要它。
为:
cron文件 - >删除旧记录 - >写新记录
如果xml不正确或脚本有问题该怎么办?然后我们吹走了数据,目前无法获取任何新数据。
如果XML信息不好,至少我可以在前端写一些php来显示旧数据但是修改日期或其他东西。
哪种类型的支票和故障保险箱最适合我的应用?我需要每天更新记录,但只有在我确定要导入好的新数据时才删除旧记录。
答案 0 :(得分:1)
我建议以mysql转储的形式进行备份。实质上,转储是给定时间的数据库快照。因此,如果您启动该过程并出现问题,您可以将其恢复到开始之前的状态。工作流程将是:
创建转储 - >尝试{删除旧记录 - >创建新记录} catch(将转储装载回数据库)
如果您正在使用mySQL,可以在以下位置找到有关转储的更多信息:http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
大多数其他数据库也有某种形式的转储
答案 1 :(得分:0)
通过将几个字段散列在一起来为您的表创建一个guid - 无论哪个字段在更新之间都是持久的。例如,如果您要更新库存,则可以使用分销商和sku作为guid的输入。
然后在更新时只使用mysql REPLACE查询来交换新数据的旧数据。 REPLACE
或使用INSERT...on duplicate key update
关于这一点的好处是,如果您的脚本由于某种原因而失败,您可以安全地再次运行它而不会将额外的行推入您的表中。
如果您担心将错误的XML数据推送到数据库中,只需在将其推入表中之前验证所有数据,并且不应该跳过任何数据。
您可能希望在脚本的开头部分进行SQL备份 - 如果您的表格变得异常混乱,您可以随时返回并恢复到安全备份。