How do you load data from XML file to a ORACLE table?
You need to first create a table in oracle that matches with the fields of the XML data.
So to get the XMl into the table, you can create a generic procedure that moves an XML document into a table by converting the elements to Oracle Canonical format.
Oracle Canonical format is as follows:<ROWSET>
<ROW>
<column_name_1 />
.
.
</ROW>
<ROW>
<column_name_1 />
.
.
</ROW>
.
.
</ROWSET>
ROW is used for the table names
ROWSET is used for the XML document
You can get the XML into the canonical form using XSL:<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<ROWSET>
<ROW>
<Attribute_name>
<xsl:value-of select="Table_name/Attribute_name" />
</Attribute_name>
< /ROW>
</ROWSET>
</xsl:template>
</xsl:stylesheet>
To transform the XML document into the canonical form, you can write a procedure. Make sure you include the line below in your procedure code:
v_rows := DBMS_XMLStore.insertXML(v_context, XMLType.transform(p_xml_in, p_xsl_in));
The only remaining step is calling your procedure:DECLARE
v_xml XMLType := XMLType( YOUR XML Document );
v_xsl XMLType := XMLType( YOUR XSL Document );
BEGIN
procedure_name(v_xml, v_xsl, 'table_name');
END;