oracle表中一個欄位內容匯出到磁碟上

來源:互聯網
上載者:User

有沒有遇到過這樣的問題,

系統設計的時候,會把一些內容比較大的常值內容存入到表中(oracle longe類型最大可以存放2G的文本)

剛開始也許不會有什麼問題,但是時間長了,資料量大了,經常頻繁的insert,update之後,效率開始變低了,

而且備份也會有磁碟大小和備份耗時越來越長的問題。

現在要改變原先的設計

把常值內容匯出到一個目錄中,每條記錄對應一個檔案,檔案名稱就使用該記錄的主索引值,

這樣使用exp備份的時候就不要備份這些常值內容了

下面的預存程序,使用Oracle中內建程式包:utl_file

 

--建立要匯出檔案存放目錄
create or replace directory ETF AS
'f:/exportHTML/';
/

--建立匯出預存程序
--使用主索引值作為檔案名稱
--selectSQL: select id,html from mytable
create or replace procedure exportToFile(selectSQL varchar2) as
v_file utl_file.file_type;
v_html long; --匯出欄位
v_id varchar2(64); --主索引值,檔案名稱

type refcur_t is ref cursor;
refcur refcur_t;
begin
v_dir := 'ETF'; --上面定義的目錄名稱

open refcur for selectSQL; --開啟遊標
--迴圈遊標提取資料
loop
fetch refcur
into v_id, v_html;
exit when refcur%notfound;

--開啟檔案
v_file := utl_file.fopen(v_dir, v_id||'.html', 'w');
--寫入
utl_file.put(v_file,v_html);
--關閉
utl_file.fclose(v_file);
/**/
end loop;
close refcur; --關閉遊標
EXCEPTION
when others then
if utl_file.is_open(v_file) then
utl_file.fclose(v_file);
end if;
end;
/

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.