XML Data from Relational Tables
Hi,
My requirement is to pull data from relational tables into xml format and port it to the user (either as a file or allow the user to access it directly from their browser). What is the best way to accomplish this. Your suggestions are appreciated.
thanks.
Marco,
Thanks for your reply, did try that , but I want the users to query this view also. Due to the nature of the xml structure I am getting the correct results. May be my xpath query is not right? My xml is as below:
<node1 attribute-node1 = "somevalue1">
<cnode1 attribute-cnode1 = "somevalue2">
<cnode2 attribute-cnode2 = "somevalue3">
<cnode3>somevalue4</cnode3>
<cnode4>somevalue5</cnode4>
</cnode2>
<cnode2 attribute-cnode2 = "somevlaue6">
<cnode3>somevalue6</cnode3>
<cnode4>somevalue7</cnode4>
</cnode2>
</cnode1>
</node1>
and my requirement is like : the user wants to see only cnode2 with attribute value "somevalue3" (along with the rest of the xml) ie
<node1 attribute-node1 = "somevalue1">
<cnode1 attribute-cnode1 = "somevalue2">
<cnode2 attribute-cnode2 = "somevalue3">
<cnode3>somevalue4</cnode3>
<cnode4>somevalue5</cnode4>
</cnode2>
</cnode1>
</node1>
Need the correct xpath query for this.
Thanks
Similar Messages
-
Mapping with xml-schema XML-data to relational tables
Hello,
is it possible to map data from xml documents to relational tables with xml-schema?
I mean not in nested tables but in relational tables with primary and foreign keys!
With SQL Server 2005 it is very easy, I dont believe that Oracle couldn't do this!
I searched but i cant find anything about that!
Thx
user445232indeed, oracle does this for xml schema based xmltype data, however, these underlying tables are not accessable to the application. Maybe It should for next version, so folks who like to use relational model can use it without mapping it manually.
Actually, nested tables, are the same, their underlying tables (segments) are indeed relational tables, oracle manages them internally and not visiable to the application. You can find them in the user_segments, user_objects views though. -
Extracting data from Relational tables in 11.1.2.1
I want to extract the following data sets from relational tables
1. Attribute and its associated base member
2. Smartlist value of an account
Does any one have a code to extract this kind of data? Even pointing to the correct table names will be helpful.
ThanksThe table layouts can be found in the [documentation for EPMA|http://www.oracle.com/technetwork/middleware/bi-foundation/epm-data-models-11121-354684.zip] . If this doesn't work, there are other options to export hierarchies to text files. You can use life cycle management or the [EPMA File Generator|http://docs.oracle.com/cd/E17236_01/epm.1112/epma_file_gen_user/launch.html].
Kyle Goodfriend
http://www.in2hyperion.com
Please make sure you assign your post as answered when an appropriate answer is provided (or helpful when applicable) so others benefit. -
Create a large XML extract from relational tables - 10g
The Oracle 10g documentation recommends using the various SQL functions such as XMLAGG,XMLELEMENT or DBMS_XMLGEN under chapter "16 Generating XML Data from the Database" for generating a XML extract file. The DBMS_XMLDOM seems like a useful structured package to create a XML formatted extract. Any idea why Oracle does not recommend the use of XMLDOM API ? Are there performance issues or likely de-support ?
Whats the best way to produce a large XML extract?
Thanks.mdrake wrote:
No reason not to use it. It just tends to require a lot more coding than the other methods. Underneath the covers they all map into the same code-line. In general, to generate a given XML document you wlll write far fewer lines of code using the SQL/XML operators. Less Code written = less code to maintan = faster time to market.Less code to parse...? -
How to create xml file from relational tables in 10gR2
Hi,
I am very new to XML and was wondering how to create an XML file from querying relational tables. Some child tables may contain multiple rows that need to be returned in certain instances. Other queries will just be single or multiple rows from one or more tables. I would like to use the latest feathers in 10gR2. Thanks for any help you can provide.
Thanks,
LeeHere is the first row of data created from our person table - it used the column names as the tag names:
<?xml version="1.0"?>
<ROWSET>
<ROW>
<MP_ID_SEQ>289</MP_ID_SEQ>
<MP_NAME>LOBERG,JUDITH LEE</MP_NAME>
<MP_SEX>F</MP_SEX>
<MP_RACE>I</MP_RACE>
<MP_DOB>19500709</MP_DOB>
<MP_HT>504</MP_HT>
<MP_WT>170</MP_WT>
<MP_EYE_CLR>BLU</MP_EYE_CLR>
<MP_HAIR_CLR>BRO</MP_HAIR_CLR>
<MP_SKN>RUD</MP_SKN>
<MP_SMT>POCKMARKS</MP_SMT>
<MP_SOC>517607968</MP_SOC>
<MP_OLN>517607968</MP_OLN>
<MP_OLS>MT</MP_OLS>
<MP_OLY>2007</MP_OLY>
<MP_CAUT_MED>70</MP_CAUT_MED>
<MP_VISION_SCRIPT>C0RRECTIVE LENSES</MP_VISION_SCRIPT>
<MP_DNA_AVAIL>N</MP_DNA_AVAIL>
<CREATED_BY>MMPS</CREATED_BY>
<DTM_CREATED>31-AUG-06</DTM_CREATED>
<MI_INC_ID_SEQ>288</MI_INC_ID_SEQ>
<MP_ALERT>N</MP_ALERT>
</ROW> -
Loading XML Data into Relational Table
Hello,
I receive an XML file generated from another tool (on Windows), I am trying to create a Linux shell script that will gather the needed XML file from my Linux database server, then have Oracle use this file to load the XML data into a relational table. This activity & data will be needed on an ongoing basis.
I have tried this two ways. First, I loaded the XML document into the database and tried to extract the data directly from the document, but that is not working. Now I want to try to read the data directly from the file on the server via select, however I am not getting any data returned. In the Select statement below, I am simply trying to query the data to see what is returned for my testing.
Create Table ci_results_table (transactionID Varchar2(100), //transactionID should be PrimaryKey but was getting NULL value errors during insert test, so removed PK
message Varchar2(200),
ci Varchar2(50),
processeddate xmltype,
status Varchar2(50),
sourcefile VarChar2(100));
select x.*
from XMLTable(
'TSPLoadResults/Results'
PASSING xmltype(bfilename('CMDB_DEVADHOCRESULTS_DIR','LoadResults-HP_146.results.xml'), nls_charset_id('AL32UTF8'))
COLUMNS
transactionID Varchar2(100) PATH 'TransactionID',
Result XMLType PATH 'Result',
Message Varchar2(200) PATH 'Message',
PrimaryKey Varchar2(50) PATH 'PrimaryKey',
ProcessedDate date PATH 'ProcessedDate',
Status Varchar2(50) PATH 'Status',
SourceFile VarChar2(100) PATH 'SourceFileName'
) x
Eventually I will need to build on this to limit the data returned to those records where SourceFileName is like 'HPDS%' and insert what is returned in to the ci_results_table. Attached is a sample Results XML file I am trying to load, It is named "ResultsTransformedtoUnix" because I used dos2Unix to convert it to Unix which may be right or wrong. (The output file I send out has to be transformed to DOS format before the other application can read it). Original file (before Unix conversion) named in script is also attached.
Please help. Thank you!Hi,
I see some wrong things in your query.
1) The obvious one, explaining why you're not getting any data : there's a typo in the XQuery expression, it's "Result" not "Results"
2) ProcessedDate cannot be extracted as a date (at least not directly) since it actually represents a timestamp, use TIMESTAMP WITH TIME ZONE datatype and cast back to DATE in the SELECT clause
3) transactionID is an attribute, it must be accessed with '@' (or 'attribute::' axis)
4) If the file encoding is truly ISO-8859-1 as the prolog suggests, then do not use AL32UTF8 but the corresponding charset name : WE8ISO8859P1
Here's the working query :
select x.transactionID
, x.Message
, x.Primarykey
, cast(x.ProcessedDate as date) ProcessDate
, x.Status
, x.SourceFile
from XMLTable(
'/TSPLoadResults/Result'
PASSING xmltype(bfilename('XML_DIR','LoadResults-HP_146.results.xml'), nls_charset_id('WE8ISO8859P1'))
COLUMNS
transactionID Varchar2(100) PATH '@transactionID',
Message Varchar2(200) PATH 'Message',
PrimaryKey Varchar2(50) PATH 'PrimaryKey',
ProcessedDate timestamp with time zone PATH 'ProcessedDate',
Status Varchar2(50) PATH 'Status',
SourceFile VarChar2(100) PATH 'SourceFileName'
) x
Using this query directly over the file will only perform decently (for large files) on 11.2.0.4 and onwards.
On prior versions, first load the file in a (temporary) XMLType column with Binary XML storage and SELECT from there.
because I used dos2Unix to convert it to Unix which may be right or wrong.
This conversion shouldn't be necessary. -
Is there any way to improve Query which searches XML data from a table??
hi all,
i have a table which have one column say 'colA' as Varchar(max) datatype which i save xml data and it have other cols too
Currently i am searching data inside this table using like operator
eg:
Select * from tablename where colA like ‘%<tagname>parameterstringvalue</tagname>%’
when i check with the Execution plan i could see it Takes 82% for clusterd index scan ( primarykey col
not ColA)
i added new non clusterd index for the same with include col as ColA and i found nonclusterd index scan
with same estimated I O cost and Extimated operator cost as clusterd index scan
My Question is :-
1. why didnt nonclusterd index seek come?
2. In What way i can improve perfomance for such situvation? i had seen couple of post suggesting to rewrite the Query as SELECT
* FROM myTable WHERE CONTAINS (myCol1, myCol2, "myString").
I Try creating Full text index and found cost increased compared to the original Query ?
3. As per my assumption the wild charecter ('%') in begining makes perfomance issue is there any option
or an alternative for such case?hi...i can give a skeleton
--Table Structure------------
Table1:-
(colA - int(PK),
ColB - Varchar(max),
ColC-uniquieidentifier,
ColD-datetime,
ColE-Bit)
It have clusterd index for ColA
Table2:-
(ColA-int(fk)
colF-int(pk)
colG-varchar(max),
ColH-uniqueidentifier,
colI-int,
colJ-int
ColK-date)
-----------------Query Skeleton-------------------:
select Distinct
s.colA,
s.ColB,
S.colC,
S.colD
from Table1 s with (nolock)
left outer join table2 Q with (nolock) on s.colA=q.ColA
where Q.ColA is null
and s.colB like '%<tag>sometext</tag>%'
and s.colD >='1/1/2010'
and s.colD <='1/1/2014'
i hope this will help to understand it clearly......... -
Load XML Data into relational Table
Hi All,
I have a requirement to load data in an XML file into columns in an oracle table. This has to be done on the command line from a unix box which connects to a remote oracle DB.
Can some one give me a step by step procedure to do this (preferably using sqlloader) or point me in the right direction.
thank youHi,
Read "Oracle XML DB Developer's guide", Chapters 2,3,4,5.
That will give you very good idea.
The reason, I am suggesting reading is, there is not "one" way to do it. There can be many good ways, depending on the size, complexity of the XML and also your intended use of that XML data.
Regards -
How could we read the XML data from a table using BODS.
Hi Guys,
My requirement is , As the OLTP system consists of a table called person which consists of a column demographics. so how could i read this XML data which is in one column of an SQL table called persons. As this XML data will populate the remaining fields in my target using BODS.
Regards,
Amjad.Hi Amjad,
I am afraid there ain't any direct method to extract XML field from a data base.
Indirect way could be converting the whole table (instead of one field) into XML format and then extract one field from it!!
Regards,
Mubashir Hussain -
Retrieve xml data from a relational table(oracle) with datatype as xmltyp
Hello Avijit, any resolution for this issue?
hi .... I am trying to retrieve xml data from a relational table with datatype as xmltyp. The SQ is retrieving rows but the xml parser give transformation error . The transformation retrieve xml data from a relational table(oracle) with datatype as xmltyp returned a row error status on receiving an input row on group retrieve xml data from a relational table(oracle) with datatype as xmltyp. ERROR : An XML document was truncated and thus not processed. Input row from SQ_XMLTYPE_TEST: Rowdata: ( RowType=0(insert) Src Rowid=5 Targ Rowid=5 DOCUMENT (DataInput:Char.64000:): "<?xml version='1.0' encoding='UTF-8'?><main><DATA_RECORD> <OFFER_ID>434345</OFFER_ID> <ADDR>sec -2 salt lake</ADDR> <CITY>kolkata</CITY> (DISPLAY TRUNCATED)(TRUNCATED)" ) thanks in advance Avijit
-
Reading xml data from url and insert into table
CREATE TABLE url_tab2
URL_NAME VARCHAR2(100),
URL SYS.URIType
INSERT INTO url_tab2 VALUES
(’This is a test URL’,
sys.UriFactory.getUri(’http://www.domain.com/test.xml’)
it is giving error as invalid characterCheck if your single quotes are the correct single quotes.
The principle works as advertised in the XMLDB Developers Guide...
C:\>sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Tue Nov 25 21:44:46 2008
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create user OTN identified by OTN account unlock;
User created.
SQL> grant dba, xdbadmin to OTN;
Grant succeeded.
SQL> conn OTN/OTN
Connected.
SQL> CREATE TABLE uri_tab (docUrl SYS.URIType, docName VARCHAR2(200));
Table created.
SQL> -- Method SYS.URIFACTORY.getURI() with absolute URIs
SQL> -- Insert an HTTPUri with absolute URL into SYS.URIType using URIFACTORY.
SQL> -- The target is Oracle home page.
SQL> INSERT INTO uri_tab VALUES
2 (SYS.URIFACTORY.getURI('http://www.oracle.com'), 'AbsURL');
1 row created.
SQL> -- Insert an HTTPUri with relative URL using constructor SYS.HTTPURIType.
SQL> -- Note the absence of prefix http://. The target is the same.
SQL> INSERT INTO uri_tab VALUES (SYS.HTTPURIType('www.oracle.com'), 'RelURL');
1 row created.
SQL> -- Insert a DBUri that targets employee data from database table hr.employees.
SQL>
SQL> INSERT INTO uri_tab VALUES
2 (SYS.URIFACTORY.getURI('/oradb/HR/EMPLOYEES/ROW[EMPLOYEE_ID=200]'), 'Emp200');
1 row created.
SQL> SELECT e.docUrl.getCLOB(), docName FROM uri_tab e;
E.DOCURL.GETCLOB()
DOCNAME
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN
">
<html>
<head>
AbsURL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN
">
<html>
E.DOCURL.GETCLOB()
DOCNAME
<head>
RelURL
<?xml version="1.0"?>
<ROW>
<EMPLOYEE_ID>200</EMPLOYEE_ID>
<FIRST_NAME>Jenn
Emp200
SQL> set long 1000
SQL> select HTTPURITYPE('www.oracle.com').getCLob() from dual;
HTTPURITYPE('WWW.ORACLE.COM').GETCLOB()
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN
">
<html>
<head>
<title>Oracle 11g, Siebel, PeopleSoft |
Oracle, The World's Largest Enterprise S
oftware Company</title>
<meta name="title" content="Enterprise Applications | D
atabase | Fusion Middleware | Applicatio
ns Unlimited | Business | Oracle, The Wo
rld's Largest Enterprise Software CompanEdited by: Marco Gralike on Nov 25, 2008 10:13 PM -
Inserting data from a table to an XML file
I want to insert the values from this xml file emp.xml into a table Employees :
<EMPLOYEES>
<EMP>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<HIREDATE>17-DEC-80</HIREDATE>
<SAL>800</SAL>
</EMP>
<EMP>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<HIREDATE>20-FEB-81</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
</EMP>
<EMP>
</EMPLOYEES>
and here is my Employee table in Oracle 9i database
SQL> DESC EMPLOYEE;
Name Null? Type
EMPNO NUMBER
EMPNAME VARCHAR2(10)
JOB VARCHAR2(10)
HIREDATE DATE
SAL NUMBER
After getting help from the members i was able to do the insert of data from the xml file to the table..how to do the insert of data from the table to the xml file.
Regards,
RenuHello michaels , thank you for the solution, still i am having some problems
Here is what i have done :
1.
SQL> CREATE DIRECTORY my_table_dir AS 'E:\table_files'
2 ;
Directory created.
2.
SQL> select * from myemp;
ENAME
SMITH
ALLEN
3.
This is the content of the existing xml file saved in the directory E:\table_files as emp.xml
<EMPLOYEES>
<EMP>JIM</EMP>
<EMP>RICK</EMP>
</EMPLOYEES>
4.
Now i executed this code :
declare
emp_xml xmltype;
begin
select sys_xmlagg (column_value, sys.xmlformat ('EMPLOYEES')) emp_xml
into emp_xml
from table (xmlsequence (cursor (select *
from myemp
where ename in ('SMITH', 'ALLEN')),
sys.xmlformat ('EMP')
dbms_xslprocessor.clob2file (emp_xml.getclobval (), 'E:\table_files', 'emp.xml');
end;
And the Error i got is :
declare
ERROR at line 1:
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 18
ORA-06512: at "SYS.UTL_FILE", line 424
ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 46
ORA-06512: at line 12 -
Creating XML file using data from database table
I have to create an xml file using the data from multiple table. The problem That i am facing is the data is huge it is in millions so I was wondering that is there any efective way of creating such an xml file.
It would be great if you can suggest some approach to achieve my requirement.
Thanks,
-VinodAn example from the forum: Re: How to generate xml file from database table
Edited by: Marco Gralike on Oct 18, 2012 9:41 PM -
Convert data from internal table to XML file.
Hi All,
I am selecting data from database into one internal table.
Now I want to convert data from internal table to xml file format and save in to my desktop. Please suggest me how I can achieve my requirement.
Kindly reply me ASAP.Use this FM. SAP_CONVERT_TO_XML_FORMAT
Check this link too -
Re: Data Export in XML format
XML files from ABAP programs -
ABAP program to output data from SAP table to an XML format file?
hello ABAP experts,
Does anyone know how to output data from SAP table to an XML format file? Would be appreciated if someone show the detailed sample codes and we will give you reward points!
Thanks!Edited by: Jose Hugo De la cruz on Aug 19, 2009 8:23 PM
Maybe you are looking for
-
Objects related to SD for excise invoice number range
Dear gurus, Kindly provide the objects related to excise invoice number range for SD module to be updated for new financial year. [ for ex. j_1excloc ] Regards R.Rajendran
-
Posting Incoming payments - F-28
*Tcode> F-28* I am trying to post incoming payment. The customer is created in company code 1050 but, I am getting this error message: "The entry 1050 is missing in table T043G" How do I correct this error? Please, I need step by step how to solve th
-
How to invoke dos shell from java program
Hi, I'm not able to invoke dos shell from java. Can any one help me in this issue. I'm providing the source code below: try{ Runtime.getRuntime().exec("cmd.exe") catch(IOException e) { System.out.println(e.getStackTrace()); Thanks
-
Hi all, I need to store multiple images into the database. I am using stored procedure for the same. I am passing image as byte[] and since i have to store multiple images at one go, I am just switching between my Java code and the database procedure
-
I own a iPhone 2G Today He underwent updated Software He gave me this message "The SIM card inserted in this iPhone does not appear to be supported. Only compatible SIM cards from a supported Carrier may be used to activate iPhone. Please insert the