設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 1743|回復: 0
打印 上一主題 下一主題

How to use UTL_COMPRESS package to compress the txt file

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2019-10-23 09:44:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

below code is working fine for compress the large size file as well.


  1. DECLARE
  2.    in_filename VARCHAR2(100);
  3.    src_file   BFILE;
  4.    v_content  BLOB;
  5.    v_blob_len INTEGER;
  6.    v_file     utl_file.file_type;
  7.    v_buffer   RAW(32767);
  8.    v_amount   BINARY_INTEGER := 32767;
  9.    v_pos      INTEGER := 1;
  10. BEGIN
  11.     in_filename := 'Test.txt';
  12.    src_file := bfilename('DIR_UTL_COM_TEST', in_filename);
  13.    dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
  14.    v_content  := utl_compress.lz_compress(src_file, 9);
  15.    v_blob_len := dbms_lob.getlength(v_content);
  16.    v_file     := utl_file.fopen('DIR_UTL_COM_TEST',
  17.                                 in_filename || '.gz',
  18.                                 'wb');
  19.    WHILE v_pos < v_blob_len LOOP
  20.       dbms_lob.READ(v_content, v_amount, v_pos, v_buffer);
  21.       utl_file.put_raw(v_file, v_buffer, TRUE);
  22.       v_pos := v_pos + v_amount;
  23.    END LOOP;
  24.    utl_file.fclose(v_file);

  25. EXCEPTION
  26.    WHEN OTHERS THEN
  27.       IF utl_file.is_open(v_file) THEN
  28.          utl_file.fclose(v_file);
  29.       END IF;
  30.       RAISE;
  31. END;
複製代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-16 07:37 , Processed in 0.248820 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表