ORACLE 213W 行数据 生成对应的OWC的XML搞定

ORACLE 213W 行数据 生成对应的OWC的XML
原来采用
RS直接返回结果集进行计数5000行写入文件,每次都出现java heap space
对tomcat的catalina.bat文件加入
JAVA_OPTS=-Xmx512M
后生成文件效率提高,但生成20左右文件时还是会出现java heap space

后采用rownum分页
 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ //这儿进行分指定行生成xml文件 
 2 None.gif         
 3 None.gif         int  ipage = xmlfilenum;  // 分页单位 
 4 None.gif          int  allpage = 0 // 总页数 
 5 None.gif         // int pages=0;  // 接受的页码变量 
 6 None.gif          int  cpage = 1 // 当前页 
 7 None.gif         // int spage=0;  // 开始页 
 8 None.gif          int  allCol = 0 ;
 9 None.gif         // Vector v=null;
10 None.gif         String sql,pagesql,ssql2;
11 None.gif        ssql2 = FileName;
12 None.gif
13 None.gif //         取总文章数 
14 None.gif                 pagesql  =   " SELECT COUNT(*) FROM  " + ssql2;
15 None.gif                 // statement = conn.createStatement();
16 None.gif                 rs = excuteQuery(pagesql);
17 None.gif                 // pagers = statement.executeQuery(pagesql); 
18 None.gif                  while (rs.next())
19 ExpandedBlockStart.gifContractedBlock.gif                 dot.gif {
20InBlock.gif                allCol = rs.getInt(1);
21InBlock.gif                System.out.println("###############总行数############<BR>");
22InBlock.gif                System.out.println(allCol); 
23InBlock.gif                System.out.println("###########################<BR>");
24ExpandedBlockEnd.gif                }

25 None.gif                
26 None.gif                 // 获得总页面数 
27 None.gif             allpage  =  ( int )Math.ceil((allCol  +  ipage - 1 /  ipage); 
28 None.gif             
29 None.gif         for (cpage = 1 ;cpage <= allpage;cpage ++ )
30 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {        
31InBlock.gif            sql="select * from (select rownum no,t.* from "+ssql2 +" t where rownum<"+cpage*ipage+") where no>"+(cpage-1)*ipage;
32InBlock.gif            t_FileNameCount=cpage;
33InBlock.gif            DataOutputStream t_Output=null;
34InBlock.gif            t_FileName = "";
35InBlock.gif            t_FileName = fTmpXmlPreDir + "\\"  + FileName + "Xml\\" + FileName + "_" + t_FileNameCount + "_" + "Xml.xml";
36InBlock.gif            fTmpXmlFileName.add(t_FileName);//存储文件名包括路径    
37InBlock.gif            //fTmpXmlFileName2.add(FileName + "Xml/" + FileName + "_" + t_FileNameCount + "_" + "Xml.xml");//存储文件名不包括路径
38InBlock.gif            t_Output = new DataOutputStream (new BufferedOutputStream(new FileOutputStream(t_FileName)));
39InBlock.gif            t_Output.write(t_PreData.getBytes("UTF8"));
40InBlock.gif            //先在文件中将xml文档的所有头部描述 部分写入
41InBlock.gif            
42InBlock.gif            rs=excuteQuery(sql);
43InBlock.gif                 while(rs.next())
44ExpandedSubBlockStart.gifContractedSubBlock.gif                 dot.gif{
45InBlock.gif                    String t_aRowData = "";
46InBlock.gif                    forint i1=0 ; i1 < this.columnNames.length ; ++i1)
47ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
48InBlock.gif                        if (rs.getString(i1+2)!=null)//+2 跳过分页时的no字段
49ExpandedSubBlockStart.gifContractedSubBlock.gif                        dot.gif{
50InBlock.gif                            t_aRowData = t_aRowData + " Col" + i1 + "=\"" + rs.getString(i1+2) + "\"";
51ExpandedSubBlockEnd.gif                        }

52ExpandedSubBlockEnd.gif                    }

53InBlock.gif                   
54InBlock.gif                    //t_RowData = t_RowData + "<z:row "+ t_aRowData + " />\n";
55InBlock.gif                    t_aRowData = "<z:row "+ t_aRowData + " />\n";
56InBlock.gif                    t_Output.write(t_aRowData.getBytes("UTF8"));
57ExpandedSubBlockEnd.gif                 }

58InBlock.gif            String t_WriteData = " </rs:data>\n </x:PivotCache>\n</xml>\n";
59InBlock.gif            t_Output.write(t_WriteData.getBytes("UTF8"));
60InBlock.gif            t_Output.close();//每2000行关闭文件,重新创新新文件做准备
61InBlock.gif            
62InBlock.gif            System.gc();
63ExpandedBlockEnd.gif        }
   // end for allpage

终于搞定.细节再调整中

转载于:https://www.cnblogs.com/guola/archive/2006/11/22/568037.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值