Archives

Monday, March 11, 2019

How to Load XML data into a table

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



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
--);

No comments:

Post a Comment