大数据导出方法计算机DelphiPerl_计算机-计算机原理.pdf





《大数据导出方法计算机DelphiPerl_计算机-计算机原理.pdf》由会员分享,可在线阅读,更多相关《大数据导出方法计算机DelphiPerl_计算机-计算机原理.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大数量据导出设计 1 导出方法设计思路有以下几点 1、导出数据的格式采用 CSV 或者可转换 xls 的 htm格式 2、控制一次最大的导出数量,如果超过上限分多次导出。3、从数据库中读取数据后不放入集合类的容器,而是直接使用 10写入本地文 件,读取一条写入一条或者合并到一定数量批量写入。4、导出完成后提示下载链接,让用户自行下载,而不是采用原先直接放入 respo nse单出下载,以此减少数据流量加快导出速度。2 示例 2.1 小数据量的导出 商务领航原先采用的皆是此方法,先将数据从数据库中取出然后放入集合容 器中,最后再通过 response导出数据流,此方法优点是适合小量数据的导出,而
2、 且可以做的比较通用。不足之处是资源占用较大,大数据量时 jvm 内存占用高。public static void testExport1()DBCo nnEX db=null;BufferedWriter buf=null;String sql=select*from biz_ moon _log t order by t.id desc;File f=new File(d:/log2.csv);Connection conn=n ull;Stri ngBuffer stb=null;List list=null;long star=System.curre ntTimeMillis();S
3、ystem.out.pri ntln(star);try list=new ArrayList();buf=new BufferedWriter(new FileWriter(f);db=new DBC onn EX();Stateme nt stmt=conn.createStateme nt();ResultSet rs=stmt.executeQuery(sql);while(rs.next()stb=new Stri ngBuffer();stb.appe nd(rs.getStri ng(1)+,);stb.appe nd(rs.getStri ng(2)+,);stb.appe n
4、d(rs.getStri ng(3)+,);stb.appe nd(rs.getStri ng(4)+,);stb.appe nd(rs.getStri ng(5)+,);stb.appe nd(rs.getStri ng(6);list.add(stb.toStri ng();/buf.write(stb.toStri ng();stb=nu II;for(i nt i=O;ilist.size();i+)Stri ng s=(Stri ng)list.get(i);buf.write(s);buf.close();catch(Exceptio n e)e.pri ntStackTrace(
5、);fin ally Util.disC onn ecti on(conn);long end=System.curre ntTimeMillis();System.out.pri ntln(en d);System.out.println(总耗时:+(end-star)+毫秒);2.2 CSV 格式导出 此方法针对前一方法进行了改进,不需要将数据缓存在集合类的容器中,从 数据库读取数据时直接调用 io 导出,此方法导出数据较快,占用资源少。但不 够通用,只是方法过程的改进,格式也仅是纯文本。但纯文本的 CSV 格式可以 被 excell 识别打开。public static void tes
6、tExport2()DBCo nnEX db=null;BufferedWriter buf=null;如果超过上限分多次导出从数据库中读取数据后不放入集合类的容器而是直接使用写入本地文件读取一条写入一条或者合并到一定数量批量写入导出完成后提示下载链接让用户自行下载而不是采用原先直接放入单出下载以此减少数容器中最后再通过导出数据流此方法优点是适合小量数据的导出而且可以做的比较通用不足之处是资源占用较大大数据量时内存占用高总耗时毫秒格式导出此方法针对前一方法进行了改进不需要将数据缓存在集合类的容器中从数据纯文本的格式可以被识别打开添加首行的标题内容序号标题内容时间备注末尾如果有合计项合计金额总耗
7、时毫秒格式导出引方法跟第二种方法类似只是导出格式是可以转换为的甚至可以直接命名为扩展名的文件金华市锦华园度假村 File f=new File(d:/log1.csv);Connection conn=n ull;Stri ngBuffer stb=null;long star=System.curre ntTimeMillis();System.out.pri ntln(star);try buf=new BufferedWriter(new FileWriter(f);/添加首行的标题内容 stb.append(序号 ID,标题,内容,时间,备注);buf.write(stb.toStri
8、 ng();db=new DBC onn EX();conn=db.getC onn ecti on();Stateme nt stmt=conn.createStateme nt();ResultSet rs=stmt.executeQuery(sql);while(rs.next()stb=new Stri ngBuffer();stb.appe nd(rs.getStri ng(1)+,);stb.appe nd(rs.getStri ng(2)+,);stb.appe nd(rs.getStri ng(3)+,);stb.appe nd(rs.getStri ng(4)+,);stb.
9、appe nd(rs.getStri ng(5)+,);stb.appe nd(rs.getStri ng(6);buf.write(stb.toStri ng();stb=nu II;末尾如果有合计项 stb.append(合计,-,-,-,金额);buf.write(stb.toStri ng();buf.close();stb=n ull;catch(Exceptio n e)e.pri ntStackTrace();fin ally Util.disC onn ecti on(conn);long end=System.curre ntTimeMillis();System.out.p
10、ri ntln(en d);System.out.println(总耗时:+(end-star)+毫秒);如果超过上限分多次导出从数据库中读取数据后不放入集合类的容器而是直接使用写入本地文件读取一条写入一条或者合并到一定数量批量写入导出完成后提示下载链接让用户自行下载而不是采用原先直接放入单出下载以此减少数容器中最后再通过导出数据流此方法优点是适合小量数据的导出而且可以做的比较通用不足之处是资源占用较大大数据量时内存占用高总耗时毫秒格式导出此方法针对前一方法进行了改进不需要将数据缓存在集合类的容器中从数据纯文本的格式可以被识别打开添加首行的标题内容序号标题内容时间备注末尾如果有合计项合计金额总
11、耗时毫秒格式导出引方法跟第二种方法类似只是导出格式是可以转换为的甚至可以直接命名为扩展名的文件金华市锦华园度假村2.3 Xsl 格式导出 引方法跟第二种方法类似,只是导出格式是可以转换为 xls 的 htm,甚至可以 直接命名为 xls 扩展名的文件。public static void testExport3()DBC onnEX db=n ull;try db=new DBC onn EX();long starttime=System.currentTimeMillis();Connection conn=db.getC onnection();BufferedReader reader
12、=new BufferedReader(new In putStreamReader(new File In putStream(E:/aa.xls);PrintWriter pw=new PrintWriter(new FileWriter(E:/new.xls);String line=reader.readLine();Strin gBuffer temp=new Stri ngBuffer();String originalText=;while(li ne!=n ull)temp.appe nd(l in e);line=reader.readL in e();origi nalTe
13、xt=temp.toStri ng();Stri ng regex=(.*)(+1+mmsw 金华市锦华园度假村有限公司 系统管理员+731+101)(.*);Pattern patter=Ppile(regex);Matcher match=patter.matcher(orig in alText);String head=n ull;/String body=n ull;Stri ng tail=n ull;while(match.fi nd()head=match.group(1);/body=match.group(2);tail=match.group(3);Stri ng t1=
14、Stri ng t2=;String t3=;如果超过上限分多次导出从数据库中读取数据后不放入集合类的容器而是直接使用写入本地文件读取一条写入一条或者合并到一定数量批量写入导出完成后提示下载链接让用户自行下载而不是采用原先直接放入单出下载以此减少数容器中最后再通过导出数据流此方法优点是适合小量数据的导出而且可以做的比较通用不足之处是资源占用较大大数据量时内存占用高总耗时毫秒格式导出此方法针对前一方法进行了改进不需要将数据缓存在集合类的容器中从数据纯文本的格式可以被识别打开添加首行的标题内容序号标题内容时间备注末尾如果有合计项合计金额总耗时毫秒格式导出引方法跟第二种方法类似只是导出格式是可以转换
15、为的甚至可以直接命名为扩展名的文件金华市锦华园度假村Stri ng t4=;Stri ngBufer sbHead=new Stri ngBufer();Stri ngBufer sbBody=new Stri ngBufer();Stri ngBufer sbTail=new Stri ngBufer();sbHead.appe nd(head);pw.write(sbHead.toStri ng();pw.flush();String cusid=n ull;String comp name=nu II;String compcode=n ull;String user name=n ul
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 导出 方法 计算机 DelphiPerl_ 原理

限制150内