Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengurai file XML besar dengan PL/SQL

Anda membaca file baris demi baris, tetapi menimpa xmlClob . Anda dengan setiap baris, tidak menambahkan. Anda dapat membangun CLOB dengan membaca varchar2 buffer dan menambahkan, tetapi Anda juga dapat menggunakan DBMS_LOB prosedur bawaan untuk melakukannya untuk Anda:

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

Ketika saya menggunakannya dan memuat file Anda, saya mendapatkan output:

CUZK Pod smdli.t.m 1800/9

Anda mungkin ingin beberapa pemeriksaan kesalahan di sekitar DBMS_LOB panggilan, ini hanya demo sederhana.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kueri oracle lambat dengan REGEXP_SUBSTR(AGGREGATOR,'[^;]+',1,LEVEL)

  2. Apakah Oracle menyimpan angka nol untuk tipe data Number?

  3. bantuan oracle hilang koma

  4. Menghubungkan ke SQL Server, Oracle, DB2 dan MySQL secara bersamaan menggunakan ADO.NET?

  5. Apa yang setara dengan REF CURSOR Oracle di MySQL saat menggunakan JDBC?