Sql server 使用Java将大量XML数据并行加载到SQL Server

Sql server 使用Java将大量XML数据并行加载到SQL Server,sql-server,xml,Sql Server,Xml,我想将包含XML数据的大型文件加载到SQLServer2008中。在加载每个记录之前,我需要使用数据库中不同表中的现有数据验证其中的一些字段。(例如,如果我正在将具有userid和帐户详细信息的数据加载到“user\u account”表中,我需要检查数据库的“user”表中是否存在userid) 我正在使用Java来完成这项工作。我计划将XML文件划分为小文件,并使用不同的线程运行并行加载。我正在日志文件中记录加载错误。我可以使用同步来避免日志文件一致性问题 我想知道我的方法是否正确。请告诉我

我想将包含XML数据的大型文件加载到SQLServer2008中。在加载每个记录之前,我需要使用数据库中不同表中的现有数据验证其中的一些字段。(例如,如果我正在将具有userid和帐户详细信息的数据加载到“user\u account”表中,我需要检查数据库的“user”表中是否存在userid)

我正在使用Java来完成这项工作。我计划将XML文件划分为小文件,并使用不同的线程运行并行加载。我正在日志文件中记录加载错误。我可以使用同步来避免日志文件一致性问题


我想知道我的方法是否正确。请告诉我是否有其他方法可以帮助我更快/更高效地执行加载。

与直接在SQL server中执行相比,检查记录是否在数据库中或SQL server之外非常耗时。 作为替代方案,您可以执行以下操作:

  • 将XML文件分块。e、 g大约10MB的块。确保XML块仍然符合XML模式
  • 然后将块插入到导入表中
  • 启动一个存储过程,该过程从导入表中获取所有新的XML块,并使用MERGE语句进行比较
这样做的好处是

  • 在java中,它比在记录级别上执行要快得多
  • 与完整的XML(例如1GB或更大)相比,在解析XML时,SQL中的数据块不会消耗那么多内存

如果您可以定义XML,我建议对元素和属性名称使用尽可能短的名称,因为这也会在SQL server中为解析节省大量内存

您的问题非常模糊。你看过合并吗?听起来可能会有帮助,但很难确定。谢谢。实际上,我想用数据库中的其他表验证xml数据字段。我已经编辑了这个问题。