xml - plsql dbms_xmlgen.getxmltype 更改 xml 标签格式
问题描述
我们一直在使用 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 开发人员导出文件完全相同?
感谢您的时间。
解决方案
也许更简单的方法是使用 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
推荐阅读
- python - 如何根据列中的值计数计算数据框的平均值
- java - Whitelabel 错误页面,其余 url 未在 springboot 中执行
- django - Django 在一些远程数据库上发布信号
- html - 为什么@font-face 不能在我的网站上运行?
- r - R - 数据框列表 - 如何添加列
- android - 为什么我的改造代码没有在数据库中插入数据?
- javascript - 如何从反应前端向节点后端发出发布请求?获取 404
- go - 在 'Name= ?' 附近使用的正确语法
- python - 需要帮助创建 Jpeg 世代退化代码
- javascript - React useScroll钩子中的Typescript错误:无法调用类型缺少调用签名的表达式