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;
- /
欢迎讨论你的方案