开发者社区> 问答> 正文

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

如题。

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

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

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

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

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

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

展开
收起
爱吃鱼的程序员 2020-06-07 22:26:51 1003 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

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

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

    结贴;

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

    因为主要是做数据的转移,就是从一个地方抽到另外一个地方,做一些简单的加工,分批的话,不够方便,得手动一遍一遍去分段获取,oracle的话还得计算相关的控制边界,不过正确使用了fetchSize后,非常方便的就解决了
    2020-06-07 22:27:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ADAM产品助力企业业务快速云化数据库和应用迁移(ADAM) 立即下载
Oracle 至PostgreSQL案例分享 立即下载
ORACLE数据库和应用异构 迁移最佳实践 立即下载

相关镜像