mysql大量数据java
public void get_wayid_ref_isway() throws ioexception
{
PreparedStatement ps = null; Connection con=null; BufferedReader br=new BufferedReader(new FileReader(Path.path_read_beijing)); StringBuffer s=null; StringBuffer wayId=null; StringBuffer isWay=new StringBuffer("false"); String regex_nd="\d+"; //用匹配<way id后面的数字 String regex_id="(?<=id=")\d+"; //读取整个文件信息 try { Class.forName(driver).newInstance(); con=DriverManager.getConnection(url,user,pwd); con.setAutoCommit(false); int count=0; int batchCount=1; while((s=new StringBuffer(br.readLine()))!=null) { count++; ArrayList<StringBuffer> tmp=new ArrayList<StringBuffer>(); //找出way类的信息 if(batchCount%100==0) { ps.clearBatch(); } if(s.indexOf("<way")>0) { //获得每一组WayId Pattern p1=Pattern.compile(regex_id); Matcher m1=p1.matcher(s); if(m1.find()) { wayId=new StringBuffer(m1.group()); } while (s.indexOf("</way>") <= 0) { count++; s=new StringBuffer(br.readLine()); //获得该wayid下的refid if(s.indexOf("<nd")>0) { System.out.println("所在行数:"+count); Pattern p=Pattern.compile(regex_nd); Matcher m=p.matcher(s); if(m.find()) { tmp.add(new StringBuffer(m.group())); } } //判断该way是否为道路 if(s.indexOf("<tag k="highway"")>0||s.indexOf("<tag k="cycleway"")>0||s.indexOf("<tag k="bridge"")>0) { isWay=new StringBuffer("true"); } } for(int i=0;i<tmp.size();i++) { if(isWay.toString().equals("true")) { batchCount++; StringBuffer sql1 = new StringBuffer(); sql1.append("insert into test_wayid(wayid,id,isway) values("); sql1.append("'" +wayId+"'"); sql1.append(", '"+tmp.get(i)+"', '"+"1');"); ps=con.prepareStatement(sql1.toString()); ps.addBatch(); } if(isWay.toString().equals("false")) { batchCount++; StringBuffer sql1 = new StringBuffer(); sql1.append("insert into test_wayid(wayid,id,isway) values("); sql1.append("'" +wayId+"'"); sql1.append(", '"+tmp.get(i)+"', '"+"1');");ps=con.prepareStatement(sql1.toString());
ps.addBatch();
} ps.executeBatch(); if(batchCount%100==0) { con.commit(); } } } } con.commit(); } catch (Exception e) { e.printStackTrace(); // TODO: handle exception }finally{ try { if(ps!=null) ps.close(); if(con!=null) con.close(); } catch (Exception e2) { e2.printStackTrace(); } } }报的错误是:
java.sql.SQLException: java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:430)
at com.mysql.jdbc.PreparedStatement.getInstance(PreparedStatement.java:561)
at com.mysql.jdbc.ConnectionImpl.clientPrepareStatement(ConnectionImpl.java:1395)
at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4178)
at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4077)
at Wayid_To_Sql.Get_Map_Line_beta.Get_WayId_Ref_isWay(Get_Map_Line_beta.java:128)
at Wayid_To_Sql.Get_Map_Line_beta.main(Get_Map_Line_beta.java:35)
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号