将sql查询结果导出到oracle中的xml数据文件
我有一个SQL查询,它返回两列数据,如下所示:将sql查询结果导出到oracle中的xml数据文件,sql,xml,oracle,Sql,Xml,Oracle,我有一个SQL查询,它返回两列数据,如下所示: State Name ------- --------- Online Terminal1 Offline Terminal2 Online Terminal3 Online Terminal4 现在我想创建一个运行SQL查询的XML文件。XML文件结构必须如下所示: <?xml version="1.0" encoding="utf-8" ?> <Terminallist name="xml data">
State Name
------- ---------
Online Terminal1
Offline Terminal2
Online Terminal3
Online Terminal4
现在我想创建一个运行SQL查询的XML文件。XML文件结构必须如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<Terminallist name="xml data">
<Value id="0">
<Terminal>Terminal1</Terminal>
<State>Online</State>
</Value>
<Value id="1">
<Terminal>Terminal2</Terminal>
<State>Offline</State>
</Value>
<Value id="2">
<Terminal>Terminal3</Terminal>
<State>Online</State>
</Value>
<Value id="3">
<Terminal>Terminal4</Terminal>
<State>Online</State>
</Value>
</Terminallist>
终端1
在线 的
终端2
离线
终点站3
在线 的
终端4
在线 的
我想将XML文件保存到如下目录中c:/file.XML
回答:-
表名:诱惑
表中的数据:
查询:-
SELECT XMLElement("Terminallist ", XMLAttributes('xml data' AS "name"),XMLAgg(XMLElement("value ", XMLAttributes(rownum AS "id"),XMLForest(Terminal,state))))
FROM temptable ;
输出:-
<Terminallist name = "xml data">
<value id = "1">
<TERMINAL>Terminal2</TERMINAL>
<STATE>Offline</STATE>
</value>
<value id = "2">
<TERMINAL>Terminal3</TERMINAL>
<STATE>Online</STATE>
</value>
<value id = "3">
<TERMINAL>Terminal4</TERMINAL>
<STATE>Online</STATE>
</value>
</Terminallist>
终端2
离线
终点站3
在线 的
终端4
在线 的
谢谢
纳伦达尔回答:-
表名:诱惑
表中的数据:
查询:-
SELECT XMLElement("Terminallist ", XMLAttributes('xml data' AS "name"),XMLAgg(XMLElement("value ", XMLAttributes(rownum AS "id"),XMLForest(Terminal,state))))
FROM temptable ;
输出:-
<Terminallist name = "xml data">
<value id = "1">
<TERMINAL>Terminal2</TERMINAL>
<STATE>Offline</STATE>
</value>
<value id = "2">
<TERMINAL>Terminal3</TERMINAL>
<STATE>Online</STATE>
</value>
<value id = "3">
<TERMINAL>Terminal4</TERMINAL>
<STATE>Online</STATE>
</value>
</Terminallist>
终端2
离线
终点站3
在线 的
终端4
在线 的
谢谢
Narendar此解决方案使用WITH子句从0开始生成所需的ID。使用解析的
行数()
函数可在结果集中提供有保证的排序顺序
注意:XMLRoot()
作为XML/SQL标准的一部分不推荐使用,但会生成您要求的版本头
以下是输出:
<?xml version="1.0"?>
<Terminallist name="xml data">
<Value id="0">
<Terminal>Terminal1</Terminal>
<State>Online</State>
</Value>
<Value id="1">
<Terminal>Terminal2</Terminal>
<State>Offline</State>
</Value>
<Value id="2">
<Terminal>Terminal3</Terminal>
<State>Online</State>
</Value>
<Value id="3">
<Terminal>Terminal4</Terminal>
<State>Online</State>
</Value>
</Terminallist>
终端1
在线 的
终端2
离线
终点站3
在线 的
终端4
在线 的
至于将输出写入文件,这取决于您希望如何调用SQL。如果从SQL*Plus运行SPOOL并希望将其保存到本地文件,请使用SPOOL。如果从PL/SQL运行,则需要使用UTL_文件并写入数据库服务器上的目录。此解决方案使用WITH子句从0开始生成所需的ID。使用解析的
行数()
函数可在结果集中提供有保证的排序顺序
注意:XMLRoot()
作为XML/SQL标准的一部分不推荐使用,但会生成您要求的版本头
以下是输出:
<?xml version="1.0"?>
<Terminallist name="xml data">
<Value id="0">
<Terminal>Terminal1</Terminal>
<State>Online</State>
</Value>
<Value id="1">
<Terminal>Terminal2</Terminal>
<State>Offline</State>
</Value>
<Value id="2">
<Terminal>Terminal3</Terminal>
<State>Online</State>
</Value>
<Value id="3">
<Terminal>Terminal4</Terminal>
<State>Online</State>
</Value>
</Terminallist>
终端1
在线 的
终端2
离线
终点站3
在线 的
终端4
在线 的
至于将输出写入文件,这取决于您希望如何调用SQL。如果从SQL*Plus运行SPOOL并希望将其保存到本地文件,请使用SPOOL。如果从PL/SQL运行,则需要使用UTL_文件并写入数据库服务器上的目录。为此,您可以编写自己的软件程序,执行SQL查询并根据需要保存结果,或者你可以下载一些软件来为你做这件事。使用xmlgen包生成所需格式的xml字符串,并使用utl文件包将该字符串写入文件。为此,你可以编写自己的软件程序来执行SQL查询,并根据需要保存结果,或者你可以下载一些软件来为你做这件事。使用xmlgen包生成所需格式的xml字符串,并使用utl文件包将该字符串写入文件