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

UTL_FILE.PUT_LINEで大きなサイズのデータ​​を書き込むことができません

    UTL_FILEのドキュメントによると

    CLOBをチャンクごとに書き込む必要があります。このようなもの:

    DECLARE
      v_clob CLOB;
      v_clob_length INTEGER;
      pos INTEGER := 1;
      buffer VARCHAR2(32767);
      amount BINARY_INTEGER := 32760;
      prodFeed_file utl_file.file_type;
    BEGIN
      prodFeed_file := UTL_FILE.FOPEN ('CSV_DIR', 'productFeedLargo.xml', 'w', 32767);
      v_clob := l_xmltype.getClobVal;
      v_clob_length := length(v_clob);
    
      WHILE pos < v_clob_length LOOP
        dbms_lob.read(v_clob, amount, pos, buffer);
        utl_file.put(prodFeed_file , char_buffer);
        utl_file.fflush(prodFeed_file);
        pos := pos + amount;
      END LOOP;
    
      utl_file.fclose(prodFeed_file);
    
    END;
    /
    



    1. 複数のパラメータを持つPostgreSQLアグリゲート

    2. ブロックチェーン:それは何であり、どのように機能し、ビッグデータにとって何を意味するのか

    3. PHPとmySQLで1つのステートメントで複数の更新クエリを実行する方法

    4. MySQLクエリの結果を転置する