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