key words: plsql,導出數據,大數據量
最近的賬務的項目中需要導出Excel報表,數據量比較大,解決方案如下 :
1.通過plsql在服務器端查詢出符合要求的紀錄,然后直接寫到文本文件中
2.在web端通過流的方式讀文本文件,通過POI寫到Excel,將生成的Excel流寫到respoonse實現下載
這樣做的好處是不必一次性將滿足條件的紀錄全部取出來,而是通過流的方式.
這個方式原來在處理Blob類型的字段時有直接的getStream來支持的,這次普通的數據只好通過文件的方式來實現.
貼一段sample的代碼
sql 代碼
- create or replace procedure alex_table_to_txt(filepath varchar2,filename varchar2) is
-
- v1 alex2.name%type;
- v2 alex2.address%type;
- v3 alex2.groupname%type;
-
- output varchar2(200);
-
-
- file_handle UTL_FILE.FILE_TYPE;
-
- cursor readtable is select t.name,t.address,t.groupname from alex2 t;
- begin
- file_handle:=utl_file.fopen(filepath,filename,'w',6000);
- open readtable;
-
- loop
- fetch readtable into v1,v2,v3;
- exit when readtable%notfound;
- output:=v1 || ',' || v2 || ',' || v3 ;
- utl_file.put_line(file_handle,output);
-
- end loop;
-
- close readtable;
- utl_file.fclose(file_handle);
- end alex_table_to_txt;
- /
歡迎討論你的方案