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 ORACLE 213W 行数据 生成对应的OWC的XML搞定 //////这儿进行分指定行生成xml文件 
 2 ORACLE 213W 行数据 生成对应的OWC的XML搞定         
 3 ORACLE 213W 行数据 生成对应的OWC的XML搞定         int  ipage = xmlfilenum;  // 分页单位 
 4 ORACLE 213W 行数据 生成对应的OWC的XML搞定          int  allpage = 0 // 总页数 
 5 ORACLE 213W 行数据 生成对应的OWC的XML搞定         // int pages=0;  // 接受的页码变量 
 6 ORACLE 213W 行数据 生成对应的OWC的XML搞定          int  cpage = 1 // 当前页 
 7 ORACLE 213W 行数据 生成对应的OWC的XML搞定         // int spage=0;  // 开始页 
 8 ORACLE 213W 行数据 生成对应的OWC的XML搞定          int  allCol = 0 ;
 9 ORACLE 213W 行数据 生成对应的OWC的XML搞定         // Vector v=null;
10 ORACLE 213W 行数据 生成对应的OWC的XML搞定         String sql,pagesql,ssql2;
11 ORACLE 213W 行数据 生成对应的OWC的XML搞定        ssql2 = FileName;
12 ORACLE 213W 行数据 生成对应的OWC的XML搞定
13 ORACLE 213W 行数据 生成对应的OWC的XML搞定 //         取总文章数 
14 ORACLE 213W 行数据 生成对应的OWC的XML搞定                 pagesql  =   " SELECT COUNT(*) FROM  " + ssql2;
15 ORACLE 213W 行数据 生成对应的OWC的XML搞定                 // statement = conn.createStatement();
16 ORACLE 213W 行数据 生成对应的OWC的XML搞定                 rs = excuteQuery(pagesql);
17 ORACLE 213W 行数据 生成对应的OWC的XML搞定                 // pagers = statement.executeQuery(pagesql); 
18 ORACLE 213W 行数据 生成对应的OWC的XML搞定                  while (rs.next())
19 ORACLE 213W 行数据 生成对应的OWC的XML搞定                 {
20ORACLE 213W 行数据 生成对应的OWC的XML搞定                allCol = rs.getInt(1);
21ORACLE 213W 行数据 生成对应的OWC的XML搞定                System.out.println("###############总行数############<BR>");
22ORACLE 213W 行数据 生成对应的OWC的XML搞定                System.out.println(allCol); 
23ORACLE 213W 行数据 生成对应的OWC的XML搞定                System.out.println("###########################<BR>");
24ORACLE 213W 行数据 生成对应的OWC的XML搞定                }

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

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

53ORACLE 213W 行数据 生成对应的OWC的XML搞定                   
54ORACLE 213W 行数据 生成对应的OWC的XML搞定                    //t_RowData = t_RowData + "<z:row "+ t_aRowData + " />\n";
55ORACLE 213W 行数据 生成对应的OWC的XML搞定                    t_aRowData = "<z:row "+ t_aRowData + " />\n";
56ORACLE 213W 行数据 生成对应的OWC的XML搞定                    t_Output.write(t_aRowData.getBytes("UTF8"));
57ORACLE 213W 行数据 生成对应的OWC的XML搞定                 }

58ORACLE 213W 行数据 生成对应的OWC的XML搞定            String t_WriteData = " </rs:data>\n </x:PivotCache>\n</xml>\n";
59ORACLE 213W 行数据 生成对应的OWC的XML搞定            t_Output.write(t_WriteData.getBytes("UTF8"));
60ORACLE 213W 行数据 生成对应的OWC的XML搞定            t_Output.close();//每2000行关闭文件,重新创新新文件做准备
61ORACLE 213W 行数据 生成对应的OWC的XML搞定            
62ORACLE 213W 行数据 生成对应的OWC的XML搞定            System.gc();
63ORACLE 213W 行数据 生成对应的OWC的XML搞定        }
   // end for allpage

终于搞定.细节再调整中

你可能感兴趣的:(oracle)