相关疑难解决方法(0)

带ResultSet的java.util.stream

我有几张包含大量数据的表(大约1亿条记录).所以我不能将这些数据存储在内存中,但是我希望使用类来传输这个结果集java.util.stream并将此流传递给另一个类.我读了关于Stream.ofStream.Builder运算符,但它们是内存中的缓冲流.那么有什么方法可以解决这个问题吗?提前致谢.

更新#1

好吧,我用Google搜索并找到了jooq库.我不确定,但看起来它可能适用于我的测试用例.总而言之,我有几张包含大量数据的表格.我想流式传输我的结果集并将此流传输到另一个方法.像这样的东西:

// why return Stream<String>? Because my result set has String type
private Stream<Record> writeTableToStream(DataSource dataSource, String table) {

    Stream<Record> record = null;
    try (Connection connection = dataSource.getConnection()) {
        String sql = "select * from " + table;

        try (PreparedStatement pSt = connection.prepareStatement(sql)) {
            connection.setAutoCommit(false);
            pSt.setFetchSize(5000);
            ResultSet resultSet = pSt.executeQuery();
            //
            record = DSL.using(connection)
                    .fetch(resultSet).stream();
        }
    } catch (SQLException sqlEx) {
        logger.error(sqlEx);
    }

    return record;
}
Run Code Online (Sandbox Code Playgroud)

可以请有人建议,我是否正确?谢谢.

更新#2

我在 …

java lambda jdbc jooq java-stream

42
推荐指数
3
解决办法
4万
查看次数

标签 统计

java ×1

java-stream ×1

jdbc ×1

jooq ×1

lambda ×1