Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Parsowanie dużego pliku XML z PL/SQL

Czytasz plik wiersz po wierszu, ale nadpisujesz swój xmlClob z każdą linią, bez dołączania. Możesz zbudować CLOB, czytając do varchar2 buforowanie i dołączanie, ale możesz także użyć DBMS_LOB wbudowane procedury, które zrobią to za Ciebie:

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

Kiedy używam tego i ładuję twój plik, otrzymuję wynik:

CUZK Pod smdli.t.m 1800/9

Prawdopodobnie chcesz sprawdzić błąd wokół DBMS_LOB dzwoni, to tylko prosta demonstracja.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje sposób na dodanie kolumny w określonej pozycji w tabeli Oracle?

  2. Czy ORA_HASH Oracle jest losowy?

  3. Wybór drugiego wiersza tabeli za pomocą rownum

  4. dane listygg do użytecznego formatu?

  5. jBPM 6.5 + Tomcat 8 + Transakcja Bitronix + konfiguracja Oracle 11G | Nie można zatwierdzić sesji java.lang.NullPointerException