我目前正在从事一个ESB项目(apache-camel + spring boot 2),在该项目中,我读取了一个MySQL表,该表的行数超过1亿。 我一次清空此表1行,转换该行并将其发送到另一个数据库。
当前,我使用camel-sql读取数据
//edited
.from(sql:SELECT * FROM mytable?outputType=StreamList&outpuClass=MyClass)
.split(body()).streaming()
.bean(mybean, "transform")
.end()
由于我无法进行选择*并在RAM中获取所有1亿行,因为它可能不够大,所以我深思着使用流。
因此: 看来,使用StreamList作为outputType仍然会首先获取所有行,然后才将其作为“流”(ResultSet)返回。
难道我们不能仅使用PreparedStatement的属性来“一次一次”地从数据库中流式传输数据,而不是一次获取所有数据并破坏我的VM内存吗?
谢谢。