sql >> データベース >  >> RDS >> Oracle

PL/SQLを使用した大きなXMLファイルの解析

    ファイルを1行ずつ読み取っていますが、xmlClobを上書きしています 追加ではなく、各行で。 varchar2を読み込むことで、CLOBを構築できます。 バッファと追加ですが、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. Where句に応じてSQLServerクエリがタイムアウトする

    2. Oracleデータベースにblobとしてbyte[]配列を挿入するとORA-01460が取得されます:実装されていないか、不当な変換が要求されました

    3. 複数のテーブルで同じ値を検索する

    4. MSSQLServerで列の変更を検出するための最も効率的な方法