sql >> Databasteknik >  >> RDS >> Oracle

Parsar stor XML-fil med PL/SQL

Du läser filen rad för rad, men skriver över din xmlClob med varje rad, inte bifogande. Du kan bygga upp CLOB genom att läsa in en varchar2 buffert och tillägg, men du kan också använda DBMS_LOB inbyggda procedurer för att göra det åt dig:

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

När jag använder det och laddar din fil får jag utdata:

CUZK Pod smdli.t.m 1800/9

Du vill förmodligen ha någon felkontroll kring DBMS_LOB samtal, detta är bara en enkel demo.




  1. Hur exporterar jag data från Oracle SQL Developer till Excel?

  2. Importera InnoDB-partitioner i MariaDB 10.0/10.1

  3. Hitta en sträng genom att söka i alla tabeller i SQL Server

  4. sök i databasen baserat på värdet som valts från databasen