【问题标题】:Load huge XML data to SQL Server parallely using Java使用 Java 将大量 XML 数据并行加载到 SQL Server
【发布时间】:2014-08-04 16:29:34
【问题描述】:

我想将带有 XML 数据的大文件加载到 SQL Server 2008 中。在加载每条记录之前,我需要使用来自数据库中不同表的现有数据来验证它的一些字段。 (例如,如果我将带有用户 ID 和帐户详细信息的数据加载到“user_account”表中,我需要检查用户 ID 是否存在于数据库的“用户”表中)

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

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

【问题讨论】:

  • 你的问题真的很模糊。你看过合并吗?听起来可能会有帮助,但很难确定。

标签: sql-server xml


【解决方案1】:

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

  • 将 XML 文件分割成块。例如大约 10MB 块。确保 XML 块仍然符合您的 XML 模式。
  • 然后将块插入到导入表中
  • 启动一个存储过程,该过程从导入表中获取所有新的 XML 块并使用 MERGE 语句进行比较

这样做的好处是,

  • 这比在 java 中记录级别要快得多
  • 与完整的 XML(例如 1 GB 或更大)相比,在解析 XML 时,块在 SQL 中消耗的内存并不多

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

【讨论】:

  • 谢谢。实际上我想用数据库中的其他表来验证 xml 数据字段。我已经编辑了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多