sql >> Database >  >> RDS >> Oracle

Groot XML-bestand ontleden met PL/SQL

U leest het bestand regel voor regel, maar overschrijft uw xmlClob met elke regel, niet toevoegend. Je zou de CLOB kunnen opbouwen door in te lezen in een varchar2 buffer en appending, maar u kunt ook de DBMS_LOB . gebruiken ingebouwde procedures om het voor u te doen:

DECLARE
  xmlClob CLOB;
  xmlFile BFILE;
  x XMLType;

  src_offset number := 1 ;
  dest_offset number := 1 ;
  lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
  warning integer;
BEGIN
  xmlFile := BFILENAME('XMLPARSERADRESYCUZK', 'pokus.xml');
  DBMS_LOB.CREATETEMPORARY(xmlClob, true);
  DBMS_LOB.FILEOPEN(xmlFile, DBMS_LOB.FILE_READONLY);
  DBMS_LOB.LOADCLOBFROMFILE(xmlClob, xmlFile, DBMS_LOB.LOBMAXSIZE, src_offset,
    dest_offset, DBMS_LOB.DEFAULT_CSID, lang_ctx, warning);
  x := XMLType.createXML(xmlClob);
  DBMS_LOB.FILECLOSEALL();
  DBMS_LOB.FREETEMPORARY(xmlClob);
  FOR r IN (
...

Als ik dat gebruik en je bestand laad, krijg ik de output:

CUZK Pod smdli.t.m 1800/9

U wilt waarschijnlijk een foutcontrole rond de DBMS_LOB oproepen, dit is slechts een eenvoudige demo.




  1. Inleiding tot beveiliging op rijniveau in SQL Server

  2. Hoe kom ik achter mijn MySQL-URL, host, poort en gebruikersnaam?

  3. MySQL - Retourneert X-nummer van elke GROUP BY

  4. Snelste manier om verschillen tussen twee tabellen te identificeren?