【问题标题】:method to generate large xml for about 3GB in file size生成大约 3GB 文件大小的大型 xml 的方法
【发布时间】:2019-02-22 01:04:21
【问题描述】:

我的数据在 Oracle 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 中。

我一直在网上搜索并尝试建议,尝试生成文件大小约为 3GB 的 xml 文件。

所以,我在 PLSQL 中使用了 SSRS、oracle xmldom 包、SQL(xmlelement、xmlagg...等)、手动 SQL 并逐行插入表中(select '<starttag>'|| table.value ||'</endtag>' from table)。

接下来我还要尝试什么?

(顺便说一句,我几乎要采用 Java StaX 方式,但由于我不是程序开发人员,因此我没有获得资源。所以,我被 oracle、SQL 卡住了,PLSQL 是我将使用的语言.)

我的示例代码:

https://community.oracle.com/thread/4197304

https://community.oracle.com/thread/4199003

我在这里找到了一篇关于生成大型 xml 文件的最佳实践的文章。我现在可以使用手动方式生成 xml 文件,但我花了将近 2 天的时间来生成文件大小约为 80MB 的 xml 文件。我目前的方法需要很长时间才能生成实际的 3GB xml 文件。

每个人都是怎么做的?大家用来生成大型xml文件的方法的标准时间是多少?

【问题讨论】:

    标签: xml oracle plsql


    【解决方案1】:

    我使用最简单的方法来形成xml的主要部分。这是 sqlplus 和 spool to file。脚本的运行时间为 6 分钟。

    [oracle@krw-sql-ora12-01 test_xml]$ ls -l
    total 164252
    -rwxr-xr-x. 1 oracle oinstall       405 Feb 22 10:43 test_unload_xml.sh
    -rw-r--r--. 1 oracle oinstall 168189616 Feb 22 10:49 test_xml.xml
    
    [oracle@krw-sql-ora12-01 test_xml]$ more test_unload_xml.sh
     #!/bin/sh
    
        sqlplus -s /  as sysdba <<EOF
        set heading off
        set termout OFF
        SET FEEDBACK OFF
        SET TAB OFF
        set pause off
        set verify off
        SET UNDERLINE OFF
        set trimspool on
        set timing off
        set echo off
        set linesize 1000
        set pagesize 0
        spool test_xml.xml
        select '<starttag>'|| ID_SKL||'</endtag>'  from xxx.yyyy;
        spool off
        exit;
        EOF
    

    例如输出。

    <starttag>752</endtag>
    <starttag>753</endtag>
    <starttag>755</endtag>
    <starttag>756</endtag>
    <starttag>758</endtag>
    <starttag>759</endtag>
    <starttag>767</endtag>
    <starttag>772</endtag>
    <starttag>778</endtag>
    <starttag>784</endtag>
    <starttag>789</endtag>
    <starttag>798</endtag>
    <starttag>800</endtag>
    <starttag>804</endtag>
    <starttag>805</endtag>
    

    【讨论】:

    • 感谢您的意见。我看到您是从没有条件的单表中选择的。我认为我的查询太复杂了,我需要微调那部分。如果我有解决方案会分享。
    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多