1

膨大な結果セットを取得するために、Jdbi jdbc を介して vertica に接続しようとしています。JDBIのドキュメントに従い、これをdaoに追加しました。

@SqlQuery("<query>")
@Mapper(ResultRow.StreamMapper.class)
@FetchSize(chunkSizeInRows)
public Iterable<List<Object>> getStreamingResultSet(@Define("query") String query);

しかし、データをストリーミングするのではなく、データ全体をメモリにロードしているようです

ここに画像の説明を入力

4

1 に答える 1

1

JDBI からの結果セットのストリーミングを見てきましたが、この質問に出くわしました。答えは、SQL オブジェクト クエリのドキュメントページにあります。

メソッドはjava.util.Iterator結果を遅延してロードするため

したがって、この場合、 は であるIterable<List<Object>>必要がありますIterator<List<Object>>(JDBI はデータベース行を に変換できると想定していますList<Object>)。

于 2015-06-23T06:55:05.130 に答える