【问题标题】:Convert large number of data from XML Files to Database将大量数据从 XML 文件转换为数据库
【发布时间】:2019-09-13 03:36:26
【问题描述】:

有一个子系统为每个评估请求生成 XML 数据文件。此 XML 文件可能包含大约 1000 个字段的数据。每月至少生成 10000 个 XML 数据文件。这些文件在文件服务器上生成并使用文件系统文件夹进行结构化。请参阅以下快照中的示例:

从一个文件到另一个文件的 XML 结构可能会有所不同,因为数据输入规范会随着时间而变化。

并不是所有的字段都需要去Database,只有特定的字段,至少有200个左右的字段需要去Database,在某个Table中。例如,XML 中有联系详细信息和可比较详细信息的数据。因此,对于第 123 号评估请求,我们将在一个联系人表中插入一条联系人信息记录,并在可比较表中插入一条可比较信息记录。

问题:有没有办法从 MySQL 或 SQL Server 连接以直接通过文件系统读取 XML 文件?是否有一些中间子系统或连接器使这个过程成为可能。那么,访问XML文件后,是否可以将其转换为表格格式并使用普通查询来提取字段及其值?

目前,我们正在用 ASP.NET 和 Java 开发程序来访问文件系统,查询 XML 数据文件(使用文件系统 API),一次处理每个文件,将 XML 数据文件转换为 XML 文档,使用XPath获取字段和值,并根据一定的映射连接到数据库(决定XML元素将保存在哪里,即在哪个数据库/表/列中)并生成插入SQL并执行插入指定表中的记录。

我只是想知道是否有更简单的方法?

【问题讨论】:

    标签: mysql xml xpath


    【解决方案1】:

    使用 Saxon,您可以在单个 XSLT 脚本中执行此操作:

    (a) 使用collection() 函数,您可以访问目录中的所有 XML 文件并对每个文件应用相同的处理

    (b) 使用 Saxon 的 sql:insert 扩展,您可以将新行写入关系数据库。

    这肯定会比您执行它的方式少得多,尽管性能可能不会有太大差异(取决于您的 Java 代码有多好)。

    如果您投资 Saxon-EE,您可能会获得性能优势,因为 collection() 函数是自动多线程的,因此它将利用多个内核。

    [免责声明:Saxon是我公司开发的]

    【讨论】:

    • 非常感谢您的回复。请提供链接,如果有演示,请告诉我。我想了解更多详细信息,以便向团队推荐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2022-01-15
    • 2014-02-06
    • 2014-08-24
    相关资源
    最近更新 更多