sql >> Databasteknik >  >> RDS >> Mysql

Hur man hanterar en stor datamängd med Spring MySQL och RowCallbackHandler

Här är en Spring-lösning baserad på svar tillhandahålls av BalusC.

class StreamingStatementCreator implements PreparedStatementCreator {
    private final String sql;

    public StreamingStatementCreator(String sql) {
        this.sql = sql;
    }

    @Override
    public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
        final PreparedStatement statement = connection.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        return statement;
    }
}

Någonstans i din kod:

DataSource dataSource = ...;
RowCallbackHandler rowHandler = ...;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.query(new StreamingStatementCreator("SELECT * FROM huge_table"), rowHandler);


  1. Extrahera datum (åååå/mm/dd) från en tidsstämpel i PostgreSQL

  2. Hur får man poster slumpmässigt från Oracle-databasen?

  3. UTF-8 hela vägen igenom

  4. Hur man kontrollerar MySQL-databas och tabellstorlekar