我有一个包含大约500万条记录的表。我想阅读这张表中的所有记录并对它们做一些处理。 现在我想要批量查询这些记录,比如1000,处理它们并获取下一个1000条记录等等。批量选择记录Spring JDBC模板
但是,JDBCTemplate.query方法仅返回包含表中所有记录的List。显然,我不能在内存中拥有500万条记录。
有没有办法解决我的问题,使用Spring JDBC?如果有帮助的话,基础数据库将会是DB2。
我有一个包含大约500万条记录的表。我想阅读这张表中的所有记录并对它们做一些处理。 现在我想要批量查询这些记录,比如1000,处理它们并获取下一个1000条记录等等。批量选择记录Spring JDBC模板
但是,JDBCTemplate.query方法仅返回包含表中所有记录的List。显然,我不能在内存中拥有500万条记录。
有没有办法解决我的问题,使用Spring JDBC?如果有帮助的话,基础数据库将会是DB2。
阅读javadoc of JdbcTemplate。还有很多其他方法,也称为query()
,不返回列表,并采取RowCallbackHandler
或ResultSetExtractor
作为参数。使用这些。
要设置在结果集一次提取的行数,覆盖applyStatementSettings()
并调用Statement.setFetchSize()
尝试这样
jdbcTemplate.query(sql, new RowCallbackHandler() {
public void processRow(ResultSet arg0) throws SQLException {
// ...
}
});
东西这种方式,您可以通过一个
处理任意数量的记录之一在上面如果我们调用arg0.setString('col_name','value'),那么它会每次调用DB吗? – 2017-06-06 13:07:18
我们如何通过它提高性能?在2天内只有少数缺乏记录处理..我们如何可以加载数百万的数据? – 2015-10-12 09:42:57