【问题标题】:plsql dbms_xmlgen.getxmltype change xml tag formatplsql dbms_xmlgen.getxmltype 更改 xml 标签格式
【发布时间】:2021-04-10 19:00:36
【问题描述】:

我们一直在使用 SQL 开发者的数据库导出功能来创建一些数据转储文件。文件格式如下:

<?xml version='1.0'  encoding='Cp1252' ?>
<RESULTS>
  <ROW>
      <COLUMN NAME="A_ID"><![CDATA[3]]></COLUMN>
      <COLUMN NAME="B_ID"><![CDATA[A3V09LJAF]]></COLUMN>
  </ROW>
  <ROW>
      <COLUMN NAME="A_ID"><![CDATA[5]]></COLUMN>
      <COLUMN NAME="B_ID"><![CDATA[4FAPU90FSD]]></COLUMN>
  </ROW>
</RESULTS>

但最近管理层决定将流程自动化,一种选择是使用假脱机:

SPOOL 'D:\SOME\PATH\TO\DIR\1.XML'
SELECT dbms_xmlgen.getxmltype('SELECT A_ID, B_ID FROM SOME_TABLE') FROM DUAL;
SPOOL OFF;

但是 dbms_xmlgen.getxmltype 在导出的文件中给出了不同的标签类型:

 <ROWSET>
   <ROW>
     <A_ID>3</A_ID>
     <B_ID>A3V09LJAF</B_ID>
   </ROW>
   <ROW>
     <A_ID>5</A_ID>
     <B_ID>4FAPU90FSD</B_ID>
   </ROW>
 </ROWSET>

有没有办法更改 TAG 格式并添加 CDATA 以与 SQL 开发人员导出文件完全相同?

感谢您的宝贵时间。

【问题讨论】:

    标签: xml oracle plsql sqlplus


    【解决方案1】:

    也许更简单的方法是使用 SQLcl,它与 SQL Developer 具有相同的“引擎”。因此在 SQLcl 中你会这样做

    SQL> SET SQLFORMAT XML
    SQL> SELECT * FROM emp WHERE deptno = 20;
    <?xml version='1.0'  encoding='UTF8' ?>
    <RESULTS>
            <ROW>
                    <COLUMN NAME="EMPNO"><![CDATA[7369]]></COLUMN>
                    <COLUMN NAME="ENAME"><![CDATA[SMITH]]></COLUMN>
                    <COLUMN NAME="JOB"><![CDATA[CLERK]]></COLUMN>
                    <COLUMN NAME="MGR"><![CDATA[7902]]></COLUMN>
                    <COLUMN NAME="HIREDATE"><![CDATA[17-DEC-80]]></COLUMN>
                    <COLUMN NAME="SAL"><![CDATA[800]]></COLUMN>
                    <COLUMN NAME="COMM"><![CDATA[]]></COLUMN>
                    <COLUMN NAME="DEPTNO"><![CDATA[20]]></COLUMN>
            </ROW>
    

    从这里下载 SQLcl

    https://www.oracle.com/au/tools/downloads/sqlcl-downloads.html

    【讨论】:

    • 谢谢。它工作得很好。一个问题,经过测试,同一个导出作业,SQL developer 用了 12 秒,而 SQLcl 用了 35 秒(不计算登录过程)。有没有办法优化?
    • 再次检查 sqlcl 的数组大小设置。这是最常见的原因。将其提高到(比如说)200-500
    猜你喜欢
    • 2021-03-16
    • 2020-12-17
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2018-10-14
    相关资源
    最近更新 更多