当前位置: 代码迷 >> Oracle管理 >> 匯出XML方式 請教解决办法
  详细解决方案

匯出XML方式 請教解决办法

热度:126   发布时间:2016-04-24 04:11:46.0
匯出XML方式 請教
本帖最后由 wayout99 于 2014-10-09 09:11:54 编辑
我由 http://blog.csdn.net/indexman/article/details/28130961
     http://blog.csdn.net/zhangchu_63/article/details/5554973  

F1.使用dbms_xmlquery和utl_file内置包(scott用户执行)
F1-1.使用dbms_xmlgen  
F2.使用XMLELEMENT系列内置函数返回xml(sys用户执行)
F3.使用SPOOL方式导出文件:

其中 F1與F1-1 似乎只能 撈取單層資料     ==>1對1

 select empno,ename,job,mgr, hiredate
       ,sal,comm,deptno      from emp

結果

<ROWSET>
   <ROW num="1">
      <EMPNO>7369</EMPNO>
      <ENAME>SMITH</ENAME>
      <JOB>CLERK</JOB>
      <MGR>7902</MGR>
      <HIREDATE>1980-12-17 00:00:00</HIREDATE>
      <SAL>800</SAL>
      <DEPTNO>20</DEPTNO>
   </ROW>
....
</ROWSET>

而 F2. XMLELEMENT 可以達到多層  ==>   1對多

- <DEPARTMENT ID="20" NAME="Marketing">
 - <EMPLOYEES>
  - <EMPLOYEE>
      <ID>201</ID> 
      <NAME>Michael Hartstein</NAME> 
    </EMPLOYEE>
  - <EMPLOYEE>
      <ID>202</ID> 
      <NAME>Pat Fay</NAME> 
      </EMPLOYEE>
  - <EMPLOYEE>
      <ID>3333</ID> 
      <NAME>Eric Hu</NAME> 
      </EMPLOYEE>
 </EMPLOYEES>
</DEPARTMENT>

Q1.(F2)可以做出1對多的資料,但他卻不好編寫
   請問 F1 可以 有辦法做出 1對多的方式嗎?
   
Q2.F3.SQLPLUS使用SPOOL  匯出      

set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool D:\test.log
SELECT sysdate FROM dual;
spool off
/

結果 匯出的資料卻呈現

SQL> SELECT sysdate FROM dual;

09-10月-14

SQL> spool off

WHY?   
------解决思路----------------------
可以利用to_char进行格式转化输出
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual;
  相关解决方案