Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML解析:将XML数据插入数据库:性能_Xml_Performance_Parsing - Fatal编程技术网

XML解析:将XML数据插入数据库:性能

XML解析:将XML数据插入数据库:性能,xml,performance,parsing,Xml,Performance,Parsing,您是否知道将XML解析到数据库中的最有效的方法 “最快的方式” 读取XML,进行一些检查,然后将结果插入数据库 谢谢。主要问题是 您希望通过编程方式还是使用已制作的应用程序来完成 以编程方式 这取决于XML的编写方式。如果标记/属性名称与数据库表/列匹配,那么可以非常简单地编写它,如果不匹配,则需要首先映射xml标记/属性名称以匹配数据库结构 为了得到正确的答案,我需要知道你将要写的当前语言 应用程序 一个例子: 需要考虑两件事: 确保使用流式API(如SAX或StAX)解析XML,而不是使用D

您是否知道将XML解析到数据库中的最有效的方法

“最快的方式”

读取XML,进行一些检查,然后将结果插入数据库


谢谢。

主要问题是

您希望通过编程方式还是使用已制作的应用程序来完成

以编程方式

这取决于XML的编写方式。如果标记/属性名称与数据库表/列匹配,那么可以非常简单地编写它,如果不匹配,则需要首先映射xml标记/属性名称以匹配数据库结构

为了得到正确的答案,我需要知道你将要写的当前语言

应用程序

一个例子:
需要考虑两件事:

  • 确保使用流式API(如SAX或StAX)解析XML,而不是使用DOM API进行遍历
  • 使用preparedstatement,将插入内容分批处理,比如说,1000个插入内容
  • 在Java中,您可以使用,这给了您一个StAX之上的小层。然后在内部循环中执行检查和插入:

    ps.setInt(1, a); 
    ps.setString(2, b);
    ...
    ps.addBatch();
    if(++i % 1000==0) ps.executeBatch()
    
    在循环之外准备数据库insert语句,如下所示:

        Connection conn = ...
        PreparedStatement ps = conn.prepareStatement("INSERT INTO ... (...) VALUES (?, ?,...)");
        static int i=0;
    
    在内部循环中:

    ps.setInt(1, a); 
    ps.setString(2, b);
    ...
    ps.addBatch();
    if(++i % 1000==0) ps.executeBatch()
    

    最有效的方法是使用XML数据存储,而不进行任何解析。如果不能接受,您需要告诉我们原因。@med_alpa:欢迎来到Stackoverflow。别忘了仔细阅读本手册的所有章节。您将获得一枚徽章,并提高您的Stackoverflow体验。好的,谢谢:我希望通过编程实现。使用的语言是Java。几乎在大多数情况下,XML文件都与表列匹配。有些可数表中,xmls包含的字段比表中的字段多。