mybatis oracle 查询整表千万行记录办法?

慢慢成长 发布于 2017/11/29 18:57
阅读 820
收藏 0

如题。

当前有个需求需要抽取oracle里面大量的整表数据

知道mybatis在处理 mysql数据库时,可以通过设置fetchSize为Integer.MIN_VALUE,再配上 sqlSession.select("xxx.xxx.queryAll",new ResultHander{...}),这种方式可以避免一次性加载整表数据导致内存溢出的问题

但现在要处理oracle数据库按照原mysql库的处理方式执行时报错:

请问源库变为oracle后是否在具体的处理方式上有另外的配置?

目标需求就是:查询整表数据(千万行记录以上)避免内存溢出或者直接无响应

希望有知道的朋友指下路,已经通过搜索引擎查阅过相关资料,但均未找到解决的办法。

加载中
0
慢慢成长
慢慢成长

查看oracle jdbc驱动实现代码,看到当 fetchSize小于0时会主动跑出参数错误的异常

应该是由于不同的数据库,不同的驱动实现对fetchSize有不同的处理

改为一个正整数(合理的单次load大小),即可完成对整表的加载,只是每次加载的量就等于fetchSize的大小,直到所有数据被load完

结贴;

0
砒霜鹤顶红
砒霜鹤顶红

一次查所有?为什么不分批查?

慢慢成长
慢慢成长
因为主要是做数据的转移,就是从一个地方抽到另外一个地方,做一些简单的加工,分批的话,不够方便,得手动一遍一遍去分段获取,oracle的话还得计算相关的控制边界,不过正确使用了fetchSize后,非常方便的就解决了
返回顶部
顶部