java分流读取数据库里的数据到txt,避免数据量太大读不了报内存溢出的错误
展开全部
2个要点要分清楚,是数据库报错,还是JAVA程序。2种对应不同方法。
拿ORACLE来说。判断是数据库报错,可以让DBA调整数据库参数或者调整JDBC参数。
假设是JAVA程序溢出。首先要注意不要一次读取所有记录存到变量中再写入到TXT。
最好根据ORACLE ROWID分页,一次读取100行或者500行再写入。
拿ORACLE来说。判断是数据库报错,可以让DBA调整数据库参数或者调整JDBC参数。
假设是JAVA程序溢出。首先要注意不要一次读取所有记录存到变量中再写入到TXT。
最好根据ORACLE ROWID分页,一次读取100行或者500行再写入。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-01-04
展开全部
//首先判断point是否在curPt和nextPt之间,即:此判断该点是否在该线段的外包矩形内
if (point.lng >= Math.min(curPt.lng, nextPt.lng) && point.lng <= Math.max(curPt.lng, nextPt.lng) &&
point.lat >= Math.min(curPt.lat, nextPt.lat) && point.lat <= Math.max(curPt.lat, nextPt.lat)){
//判断点是否在直线上公式
var precision = (curPt.lng - point.lng) * (nextPt.lat - point.lat) -
(nextPt.lng - point.lng) * (curPt.lat - point.lat);
if(precision < 2e-10 && precision > -2e-10){//实质判断是否接近0
return true;
}
}
}
if (point.lng >= Math.min(curPt.lng, nextPt.lng) && point.lng <= Math.max(curPt.lng, nextPt.lng) &&
point.lat >= Math.min(curPt.lat, nextPt.lat) && point.lat <= Math.max(curPt.lat, nextPt.lat)){
//判断点是否在直线上公式
var precision = (curPt.lng - point.lng) * (nextPt.lat - point.lat) -
(nextPt.lng - point.lng) * (curPt.lat - point.lat);
if(precision < 2e-10 && precision > -2e-10){//实质判断是否接近0
return true;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照抽取的表每条数据的固定数据大小来预算出需要的内存并修改启动参数,
如果服务器硬件性能有限,那么只能根据条数分次查询拆分文件了。
如果服务器硬件性能有限,那么只能根据条数分次查询拆分文件了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写个byte[]数组,做缓冲区,然后嵌套IO流。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-01-03
展开全部
只有不全部读进,部分读、处理完、再读另外的。
追问
这种方式可以避免因为数据量大而不能一次性读完的情况吧?,有具体代码么?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询