Oracle
 sql >> база данни >  >> RDS >> Oracle

Разбор на голям XML файл с PL/SQL

Вие четете файла ред по ред, но презаписвате вашия xmlClob с всеки ред, без добавяне. Можете да изградите CLOB чрез четене в varchar2 буфер и добавяне, но можете също да използвате DBMS_LOB вградени процедури, които да го направят вместо вас:

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

Когато използвам това и заредя вашия файл, получавам резултата:

CUZK Pod smdli.t.m 1800/9

Вероятно искате малко проверка за грешки около DBMS_LOB обаждания, това е просто демонстрация.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да заменя скоби с тирета във функцията REGEXP_REPLACE на Oracle?

  2. Как да получите датата от низ в Oracle

  3. Crystal report не успя да извлече данни от базата данни

  4. Идентифициране и разрешаване на Oracle ITL Deadlock

  5. Какво означава <> в Oracle