[转帖]Eclipse用JAVA连接Mysql 插入大量数据报错 Java heap space_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2386 | 回复: 0   主题: [转帖]Eclipse用JAVA连接Mysql 插入大量数据报错 Java heap space        下一篇 
white
注册用户
等级:少校
经验:1327
发帖:305
精华:0
注册:2011-7-21
状态:离线
发送短消息息给white 加好友    发送短消息息给white 发消息
发表于: IP:您无权察看 2014-12-8 14:17:54 | [全部帖] [楼主帖] 楼主

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();
      } 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)


大量数据

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论