UseCase: Read multiple records are of different types CSV file in Oracle Integration where 1st column does not have default values.
If we have requirement to read a "multiple records are of different types" CSV file in Oracle Integration where 1st column have default values. Then follow my below blog:
https://soalicious.blogspot.com/2023/06/oic-read-multi-records-of-different.html
In this blog, we have the following file to read:
Source file to be read:
Header1, Header2
Line1,Line2,Line3,Line4
Line11,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Header11, Header2
Line1,Line2,Line3,Line4
Line11,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Header111, Header2
Line1,Line2,Line3,Line4
Line11,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Line111,Line2,Line3,Line4
Important notes:
If you notice the file format, you will see the following:
One set is repeating mutilple times where
Header record 1 time
Line records 4 times fixed count
Implementation steps:
First create an XSD based on the CSV file using Jdeveloper File adpater configuration.
For the steps, Follow my previous blog :
https://soalicious.blogspot.com/2023/06/oic-read-multi-records-of-different.html
Then modify the xsd a little so that it can read this file properly.
Changes done:
- Replace the choice element with sequence and make maxOccurs as unbounded.
- Added a SET element as a pair element for repeating header and lines.
- Remove the conditionValues element as we dont have default values as 1st column.
Modified XSD:
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd" xmlns:tns="http://TargetNamespace.com/fileReference" targetNamespace="http://TargetNamespace.com/fileRefeference" elementFormDefault="qualified" attributeFormDefault="unqualified" nxsd:version="NXSD" nxsd:stream="chars" nxsd:encoding="US-ASCII">
<xsd:element name="Root-elememt">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded" >
<xsd:element name="SET">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HEADER">
<xsd:complexType>
<xsd:sequence>
<xsd: element name="header1" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""/>
<xsd: element name="header2" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="""/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LINE" minOccurs="4" maxOccurs="4">
<xsd:complexType>
<xsd:sequence>
<xsd: element name="line1" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""/>
<xsd: element name="line2" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""/>
<xsd: element name="line3" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""/>
<xsd: element name="line4" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="""/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
References:
https://technology.amis.nl/amis/oracle-11g-soa-suite-read-multi-record-data-from-csv-file-with-the-file-adapter-master-detail/