首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用java编程使用大型结果集长时间运行查询?

如何使用java编程使用大型结果集长时间运行查询?
EN

Stack Overflow用户
提问于 2018-10-11 00:05:29
回答 1查看 0关注 0票数 0

我正在寻找我们的项目要求之一的技术解决方案,但无法在谷歌得到正确的方法。

以下是要求。

1)我们长期运行Oracle查询,它在工作时间运行大约1.5小时,并返回大约1000万条记录。

2)我们必须使用Java编程将此结果集插入/转储到Sqlserver Db表中。

以下是我对此要求的担忧。使用Sql Query检索所有记录时,它可能会出现(Out of memory)错误。它可能会导致网络超时等

计划用Spring批处理/ kafka流处理器等,不确定它是否可以实现。请建议Java最佳方法/技术,以解决任何问题

EN

回答 1

Stack Overflow用户

发布于 2018-10-11 10:00:24

Oracle JDBC驱动程序支持流式传输。迭代时,ResultSet它只将fetchSize行加载到内存中。你可以做到这样的事情

代码语言:javascript
复制
int currentRow = 1;
while (rs.next()) {
  // get your data from current row from Oracle database and accumulate in a batch
  if (currentRow++ % BATCH_SIZE == 0) {
    //insert whole accumulated batch into SqlServer database
  }
}

在这种情况下,无需将Oracle中的所有大型数据集存储在内存中。并且将按批次插入到SqlServer中BATCH_SIZE。唯一的问题是你需要考虑在哪里提交到SqlServer数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档