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


Batch XML import - best/fastest way?

我正在将产品从XML批量导入数据库。我需要每天更新一次这些产品。

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

  1. 从XML读取1个产品
  2. 在数据库中按产品代码搜索
  3. 如果产品存在,则更新数据,否则插入
  4. 转到步骤1:)

但是,对于40000个产品的XML,这种方法需要花费2个小时。

我不知道如何改进。有什么想法吗?非常感谢。

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

考虑操作的工作者/生产者模式,让一个线程从输入文件中读取,让几个线程从队列中提取工作单元。在这种情况下,您的工作单元是XML文件中的产品。工作人员将处理数据库插入。

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

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

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

  2. 不要更新,而是执行所有插入操作。在进口在导入过程中使用事务以确保完整性。

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

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