批量XML导入 - 最好/最快的方式?

时间:2012-02-07 15:58:29

标签: php xml

我正在从XML到DB批量导入产品。我需要每天更新一次这些产品。

现在,我正在执行以下步骤:

  1. 阅读XML中的1个产品
  2. 按产品代码搜索
  3. 如果产品存在,请更新数据,否则,将其插入
  4. 转到第1步:)
  5. 但这种方法需要2个小时才能生成40,000个产品。

    我不知道,如何改进它。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

开始的好方法是找到延迟的位置(如果从磁盘读取文件,很可能是数据库查找)。

考虑操作的worker / producer模式,从输入文件中读取一个线程,并从队列中拉出几个线程。在这种情况下,您的工作单元是XML文件中的产品。工作人员倾向于数据库插入。

如果您还没有数据库,那么数据库可以从产品代码列上的索引获得加速。另外,考虑将任何项目批量插入到DB中,而不是单个记录插入。

答案 1 :(得分:0)

XML不是问题,它是查询的数量。 如果可能执行以下操作:

  1. 限制数据库的连接和查找。如果你正在使用 SQL Server,将整个XML传递给存储过程并进行处理 过程中的XML。

  2. 请勿更新,而是执行所有插入操作。之后清理旧数据 进口。在导入过程中使用事务来保持完整性。

  3. 不要在数据库中进行比较。首先从数据库中检索所有数据, 与您的XML进行比较(使用XPath),只更新所需的内容。

  4. 使用文本文件中的数据库上传机制(实际上与#2相同),然后根据需要清理旧数据。

相关问题