如题。
当前有个需求需要抽取oracle里面大量的整表数据
知道mybatis在处理 mysql数据库时,可以通过设置fetchSize为Integer.MIN_VALUE,再配上 sqlSession.select("xxx.xxx.queryAll",new ResultHander{...}),这种方式可以避免一次性加载整表数据导致内存溢出的问题
但现在要处理oracle数据库按照原mysql库的处理方式执行时报错:
请问源库变为oracle后是否在具体的处理方式上有另外的配置?
目标需求就是:查询整表数据(千万行记录以上)避免内存溢出或者直接无响应
希望有知道的朋友指下路,已经通过搜索引擎查阅过相关资料,但均未找到解决的办法。
查看oraclejdbc驱动实现代码,看到当fetchSize小于0时会主动跑出参数错误的异常
应该是由于不同的数据库,不同的驱动实现对fetchSize有不同的处理
改为一个正整数(合理的单次load大小),即可完成对整表的加载,只是每次加载的量就等于fetchSize的大小,直到所有数据被load完
结贴;
一次查所有?为什么不分批查?
因为主要是做数据的转移,就是从一个地方抽到另外一个地方,做一些简单的加工,分批的话,不够方便,得手动一遍一遍去分段获取,oracle的话还得计算相关的控制边界,不过正确使用了fetchSize后,非常方便的就解决了版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。