Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Phân tích cú pháp tệp XML lớn với PL / SQL

Bạn đang đọc từng dòng của tệp, nhưng lại ghi đè xmlClob của bạn với từng dòng, không nối tiếp. Bạn có thể xây dựng CLOB bằng cách đọc thành varchar2 đệm và thêm vào, nhưng bạn cũng có thể sử dụng DBMS_LOB các quy trình tích hợp để thực hiện việc đó cho bạn:

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

Khi tôi sử dụng nó và tải tệp của bạn, tôi nhận được kết quả đầu ra:

CUZK Pod smdli.t.m 1800/9

Bạn có thể muốn một số đăng ký lỗi xung quanh DBMS_LOB cuộc gọi, đây chỉ là một bản demo đơn giản.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay thế ba ký tự đầu tiên của một chuỗi trong oracle

  2. Oracle - trích xuất dấu thời gian từ chuỗi varchar?

  3. oracle Chọn ngày cho các mặt hàng được bán cách nhau 1 phút

  4. So sánh với ngày tháng trong Oracle sql

  5. Định dạng số trong Oracle bằng TO_CHAR