using sqlldr to load XML files and the file name ? or access the file name
503668Aug 2 2006 — edited Sep 11 2006I can use sqlldr to load the XML files when I declare the target table of XMLTYPE, but I need to load the filename and a sequence also with the XML in a table so we can mark wether the file passed validation or not.
something like ....
Create table test1
(
lobfn varchar(200),
load_number number,
XML_COL XMLTYPE
);
--------------- here is my sqlldr command
sqlldr xml_user/xml_user load_test1.ctl
LOAD DATA
INFILE *
INTO TABLE test1
append
xmltype(XML_COL)
(
lobfn FILLER char TERMINATED by ',',
XML_COL LOBFILE(lobfn) TERMINATED BY EOF
)
BEGINDATA
filename1.xml
filename2.xml
...
filename64.xml
---------------------------------------------------
sqlldr comes back and says "commit point reached - logical record count 64
but when I select count(*) from test1; it returns 0 rows.
and when I
SELECT X.* FROM tst1 P2,
XMLTable ( '//XMLRoot//APPLICATION'
PASSING P2.XML_COL
COLUMNS
"LASTNAME" CHAR(31) PATH 'LASTNAME',
"FIRSTNAME" CHAR(31) PATH 'FIRSTNAME'
) AS X;
It tells me invalid identifier ,
Do I need to use a function to get the XML_COL as a object_value ???
-----------------------------------------------------------------------------------
But when I create the table like
create table test1 of XMLTYPE;
and use sqlldr it works, but I dont have the file name, or dont know how to access it ??
and I can use
SELECT X.* FROM tst1 P2,
XMLTable ( '//XMLRoot//APPLICATION'
PASSING P2.object_value
COLUMNS
"LASTNAME" CHAR(31) PATH 'LASTNAME',
"FIRSTNAME" CHAR(31) PATH 'FIRSTNAME'
) AS X;