Step 1: Create a table XML_TAB
CREATE TABLE APPS.XML_TAB
(
FILENAME VARCHAR2(120 BYTE),
XMLDATA SYS.XMLTYPE
);
Step 2: On the Linux box create a control file
Example: 1
load data
infile 'filelist.dat'
append
into table xml_tab
(
XMLDATA lobfile(filename) terminated by eof,
filename filler char(120)
)
Example: 2 -- This is real-time example
LOAD DATA
INFILE *
append
INTO TABLE <TABLE_NAME>
TRAILING NULLCOLS
(FILE_NAME CONSTANT 'xmlfile_data.xml'
,STATUS CONSTANT 'NEW'
,SQLLDR_REQUEST_ID "1"
,CREATION_DATE "SYSDATE"
,CREATED_BY "1"
,LAST_UPDATE_DATE "SYSDATE"
,LAST_UPDATE_LOGIN "1"
,LAST_UPDATED_BY "1"
,FILE_DATA LOBFILE(FILE_NAME) terminated by eof
)
BEGINDATA
xmlfile_data.xml
CREATE TABLE APPS.XML_TAB
(
FILENAME VARCHAR2(120 BYTE),
XMLDATA SYS.XMLTYPE
);
Step 2: On the Linux box create a control file
Example: 1
load data
infile 'filelist.dat'
append
into table xml_tab
(
XMLDATA lobfile(filename) terminated by eof,
filename filler char(120)
)
Example: 2 -- This is real-time example
LOAD DATA
INFILE *
append
INTO TABLE <TABLE_NAME>
TRAILING NULLCOLS
(FILE_NAME CONSTANT 'xmlfile_data.xml'
,STATUS CONSTANT 'NEW'
,SQLLDR_REQUEST_ID "1"
,CREATION_DATE "SYSDATE"
,CREATED_BY "1"
,LAST_UPDATE_DATE "SYSDATE"
,LAST_UPDATE_LOGIN "1"
,LAST_UPDATED_BY "1"
,FILE_DATA LOBFILE(FILE_NAME) terminated by eof
)
BEGINDATA
xmlfile_data.xml
filelist.dat contains all the XML files to be loaded into the XML_TAB table. For example, the filelist.dat will contain
XMLFILE1.xml (this is the actual XML file that has XML data in it)
------------------------
Select Data from the XML column using the below query
------------------------
SELECT x.xmldata.getclobval ()
FROM xml_tab1 x;
----------------------------
Select Data into columns using the below query (Datafile specific)
----------------------------
Optionally you can create a table as: Uncomment the first and last lines below
--Create table <TableName> as (
select xt.* from xml_tab1 x, xmltable ( xmlnamespaces(default 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.01'),
'/Document/BkToCstmrDbtCdtNtfctnV01/Ntfctn'
passing x.xmldata
columns
msg_id varchar2(100) path 'Id',
CreDtTm varchar2(100) path 'CreDtTm',
Acct varchar2(100) path 'Acct/Id/PrtryAcct/Id',
owner varchar2(100) path 'Acct/Ownr/Nm',
svcr varchar2(100) path 'Acct/Svcr/FinInstnId/CmbndId/ClrSysMmbId/Id',
bankname varchar2(100) path 'Acct/Svcr/FinInstnId/CmbndId/Nm',
amount number path 'Ntry/Amt',
trxtype varchar2(10) path 'Ntry/CdtDbtInd',
trxstatus varchar2(10) path 'Ntry/Sts',
bookdate varchar2(20) path 'Ntry/BookgDt/Dt',
valdate varchar2(20) path 'Ntry/ValDt/Dt',
banktextcode varchar2(50) path 'Ntry/BkTxCd/Prtry/Cd',
trxdetails varchar2(100) path 'Ntry/TxDtls/Refs/EndToEndId',
transactionamt number path 'Ntry/TxDtls/AmtDtls/TxAmt/Amt',
RltdPtiesNm varchar2(100) path 'Ntry/TxDtls/RltdPties/Dbtr/Nm',
RltdPtiesId varchar2(100) path 'Ntry/TxDtls/RltdPties/Dbtr/Id/OrgId/PrtryId/Id',
Crdtr varchar2(100) path 'Ntry/TxDtls/RltdPties/Cdtr/Nm',
crdtracct varchar2(50) path 'Ntry/TxDtls/RltdPties/CdtrAcct/Id/PrtryAcct/Id',
fininstnid varchar2(50) path 'Ntry/TxDtls/RltdAgts/DbtrAgt/FinInstnId/CmbndId/ClrSysMmbId/Id'
) xt
--);
------------------------
Select Data from the XML column using the below query
------------------------
SELECT x.xmldata.getclobval ()
FROM xml_tab1 x;
----------------------------
Select Data into columns using the below query (Datafile specific)
----------------------------
Optionally you can create a table as: Uncomment the first and last lines below
--Create table <TableName> as (
select xt.* from xml_tab1 x, xmltable ( xmlnamespaces(default 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.01'),
'/Document/BkToCstmrDbtCdtNtfctnV01/Ntfctn'
passing x.xmldata
columns
msg_id varchar2(100) path 'Id',
CreDtTm varchar2(100) path 'CreDtTm',
Acct varchar2(100) path 'Acct/Id/PrtryAcct/Id',
owner varchar2(100) path 'Acct/Ownr/Nm',
svcr varchar2(100) path 'Acct/Svcr/FinInstnId/CmbndId/ClrSysMmbId/Id',
bankname varchar2(100) path 'Acct/Svcr/FinInstnId/CmbndId/Nm',
amount number path 'Ntry/Amt',
trxtype varchar2(10) path 'Ntry/CdtDbtInd',
trxstatus varchar2(10) path 'Ntry/Sts',
bookdate varchar2(20) path 'Ntry/BookgDt/Dt',
valdate varchar2(20) path 'Ntry/ValDt/Dt',
banktextcode varchar2(50) path 'Ntry/BkTxCd/Prtry/Cd',
trxdetails varchar2(100) path 'Ntry/TxDtls/Refs/EndToEndId',
transactionamt number path 'Ntry/TxDtls/AmtDtls/TxAmt/Amt',
RltdPtiesNm varchar2(100) path 'Ntry/TxDtls/RltdPties/Dbtr/Nm',
RltdPtiesId varchar2(100) path 'Ntry/TxDtls/RltdPties/Dbtr/Id/OrgId/PrtryId/Id',
Crdtr varchar2(100) path 'Ntry/TxDtls/RltdPties/Cdtr/Nm',
crdtracct varchar2(50) path 'Ntry/TxDtls/RltdPties/CdtrAcct/Id/PrtryAcct/Id',
fininstnid varchar2(50) path 'Ntry/TxDtls/RltdAgts/DbtrAgt/FinInstnId/CmbndId/ClrSysMmbId/Id'
) xt
--);
No comments:
Post a Comment