2014-11-14 25 views
0

請幫我將一個XML文件加載到oracle表中。 請幫我把一個XML文件加載到oracle表中。 請幫我把一個XML文件加載到oracle表中。將xml文件加載到oracle表中時出現空行

My XML file: textfile.xml 

<ATB> 
<CLAIMDATA oid="1"> 
    <Claimno>101</Claimno> 
    <patname>John,Miller</patname> 
    <payors> 
     <payordata> 
      <inscode>MCR</inscode> 
      <insbal>100.66</insbal> 
      <inspriority>1</inspriority> 
     </payordata> 
     <payordata> 
      <inscode>BCBS</inscode> 
      <insbal>200.20</insbal> 
      <inspriority>2</inspriority> 
     </payordata> 
    </payors> 
</CLAIMDATA> 
<CLAIMDATA oid="2"> 
    <claimno>102</claimno> 
    <patname>Louis,Phillipe</patname> 
    <payors> 
     <payordata> 
      <inscode>TUFTS</inscode> 
      <insbal> 1010.50</insbal> 
      <inspriority>1</inspriority> 
     </payordata> 
    </payors> 
</CLAIMDATA> 
</ATB> 

I have written the following query which gives me two empty rows with out any data. 

WITH g AS (SELECT xmltype(bfilename('SAMP_XML_DIR','textfile.xml'), nls_charset_id('WE8ISO8859P1')) xmlcol1 FROM dual) 
SELECT 
extractValue(value(x),'ATB/CLAIMDATA/Claimno') claimno   
,extractValue(value(x),'ATB/CLAIMDATA/patname') patname 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/inscode[1]') ins1code 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/insbal[1]') ins1bal 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/inspriority[1]') ins1priority 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/inscode[2]') ins2code 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/insbal[2]') ins2bal 
,extractValue(value(x),'ATB/CLAIMDATA/payors/payordata/inspriority[2]') ins2priority 
FROM g,TABLE(XMLSequence(extract(g.xmlcol1,'ATB/CLAIMDATA'))) x; 

請讓我知道我怎樣才能得到數據

Thanks, 
Sunil 

回答

0

的第一件事是在XML DB信息庫創建資源:

`CREATE OR REPLACE DIRECTORY XMLDIR 
AS 
'FileFolderPath';` 

- 創建資源

DECLARE 
res BOOLEAN; 
BEGIN 
res := DBMS_XDB.createResource('/public/myfile.xml', 
          bfilename('XMLDIR', 'myfile.xml'), 
          nls_charset_id('AL32UTF8')); 
END; 

SELECT x.clamino, x.patname, x.ins1code, 
    x.ins1bal, x.ins1priority 
FROM XMLTable('for $i in fn:doc("/public/myfile.xml") 
      return $i' 
      COLUMNS claimno VARCHAR(10) PATH 'ATB/CLAIMDATA/Claimno', 
        patname VARCHAR2(10) PATH 'ATB/CLAIMDATA/patname', 

ins1code VARCHAR2(10) PATH 'ATB/CLAIMDATA/payors/payordata/inscode[1]', 

ins1bal VARCHAR2(10) PATH 'ATB/CLAIMDATA/payors/payordata/insbal[1]', 

ins1priority VARCHAR2(10) PATH 'ATB/CLAIMDATA/payors/payordata /inspriority[1]') x; 

...等。

OR:創建XMLType表,並加載在表中的文件內容和使用XMLQuery(XQuery的)功能

create table mytablename of xmltype; 

insert into mytablename VALUES 
(XMLType(BFILENAME('XMLDIR','myfile.xml'), NLS_CHARSET_ID('AL32UTF8') )); 

select XMLQUERY(for $i ora:view("mytablename") 
       RETURNING CONTENT) from dual; 
相關問題