sql >> Databáze >  >> RDS >> Oracle

Analýza velkého XML souboru pomocí PL/SQL

Čtete soubor řádek po řádku, ale přepisujete svůj xmlClob s každým řádkem, bez připojení. CLOB můžete vytvořit načtením do varchar2 buffer a připojení, ale můžete také použít DBMS_LOB vestavěné procedury, které to udělají za vás:

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 (
...

Když to použiji a načtu váš soubor, dostanu výstup:

CUZK Pod smdli.t.m 1800/9

Pravděpodobně budete chtít provést kontrolu chyb kolem DBMS_LOB volání, toto je jen jednoduchá ukázka.




  1. Jak Atan2() funguje v PostgreSQL

  2. Jak mohu otestovat svůj příklad injekce PHP MySQL?

  3. Délka úložiště BLOB v orákulu

  4. Vraťte název místního serveru v SQL Server s @@ SERVERNAME