gpt4 book ai didi

java - 将巨大的 XML 行与数据库表记录进行比较 - 自定义要求

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:29 25 4
gpt4 key购买 nike

问题

我们有一个类似 XML 的数据(它有一些需要过滤的非 unicode)数据,

<row><div>1234</div><dept>ABCD</dept></row>
<row><div>5678</div><dept>EFGH</dept></row>

为了便于理解,仅提及 2 个列标签。实际上每个都有20多个列标签

XML 数据作为记录直接插入到 Oracle 模式表中,

div_c  qdept
1234 ABCD
5678 EFGH

更多信息

  1. XML 文件超过 9 Gig,可通过 FTP 获取。
  2. 数据库表列名称可能与 XML 列标记名称不同。
  3. 可能需要添加/定义一些规则来过滤掉行。

问题

解析这个巨大的 XML 并查明该记录是否存在于数据库表中的适当方法是什么?有可用的开源工具吗?

正在尝试什么

  • 使用默认实现(XMLInputFactory)和无效字符过滤器(FilterReader)编写 StAX 解析器
  • 计划将 XML 拆分为 block
  • 让并发线程处理每个 block
  • 每个线程都会生成一个查询来检查数据库中是否存在(我知道这很荒谬)
  • 创建一个连接池并由每个线程执行这些查询

我知道这确实是我正在做的最糟糕的事情,而且需要数年时间才能完成,我真的需要一些建议,比如是否使用任何 ORM 来简化检查并加快 XML 解析速度。

像这样的一些建议确实对我有帮助。

最佳答案

是的。我认为你使用 StAX 是正确的。您肯定想要流式传输,而 StAX 似乎具有用于流式传输 XML 的最简单的 API。我不会立即去 ORM。大多数 ORM 都是往返数据。它可以节省您的机械改造工作。当您拥有非常结构化的数据但两个模式之间的映射不是很复杂时,这会很有用。在这里,您尝试将数据从一种格式导入到另一种格式。听起来您的大型数据集具有相当简单的模式,但映射是更复杂的部分。使用自定义代码。 Pawel 关于临时表的建议听起来不错。尝试在同时对整个数据集(旧数据集和导入数据集)进行操作的存储过程中进行尽可能多的处理。您不想继续将这些行从数据库来回传输到您的应用程序。

关于java - 将巨大的 XML 行与数据库表记录进行比较 - 自定义要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com