Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle数据库可以通过哪些不同的方式查询并立即流式传输到Java文件?_Java_Database_Spring_Oracle - Fatal编程技术网

Oracle数据库可以通过哪些不同的方式查询并立即流式传输到Java文件?

Oracle数据库可以通过哪些不同的方式查询并立即流式传输到Java文件?,java,database,spring,oracle,Java,Database,Spring,Oracle,我正在使用的代码主要使用Spring和jdbcTemplate作为查询数据库的方法 作为一个不起作用的例子,只是为了让大家了解我是如何获取数据并将其显示在我的网站上的。。。 将会有一个叫做自行车的物体 List<bikeObject> bikes = new ArrayList<>(); List<Map<String, Object>> rows = jdbcTemplate.queryForList(bikeQuery)); for (Map&

我正在使用的代码主要使用Spring和jdbcTemplate作为查询数据库的方法

作为一个不起作用的例子,只是为了让大家了解我是如何获取数据并将其显示在我的网站上的。。。 将会有一个叫做自行车的物体

List<bikeObject> bikes = new ArrayList<>();
List<Map<String, Object>> rows = jdbcTemplate.queryForList(bikeQuery));
for (Map<String<Object> row : rows){
    bikeObject b = new bikeObject();
    b.setProperty((String row.get(-property-));
    ....
    bikes.push(bikeObject)
}
从这里,我想我可以迭代rset并使用BufferedWriter写入文件

我遇到的问题是,我的代码非常一致,因此如何从我拥有的Spring属性文件中设置URL/User/Password?我不想在文件中一次性输入它

还有,这是解决这个问题的最好办法吗?我可以使用jdbcTemplate+ResultSet写入文件吗?我一直在想办法

轻微更新: 我假设查询(从其他人那里传递)是最优的,并且所有数据都是必需的。这就给了我一个直接将查询结果流式传输到文件的结论。有没有一种方法可以用jdbcTemplate实现这一点,或者我必须通过

Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery(swSb);

然后在next()的基础上迭代它?

您没有很好地描述这个问题:您真的需要所有数据吗?数据库是否设置了索引,查询是否最优

您可以使用oracle分页支持,以便用户获得第一个X元素

如果您真的需要所有数据,而且数据量很大,我会避免映射到对象,特别是循环中的对象实例化。
如果你能告诉我你要排多少行,那会有帮助的

当然。这些数据都是必需的,但有时根据查询的不同(比如不像这个),数据可能非常小。查询是最优的,我最多可以期望一个完整的excel数据表,包含47列数据,大约180 mb。通过这种流到文件的路由,我避免了对象中的映射。。所以我想这就给我留下了一个问题,我是否可以将它设置为与我的Spring设置相关的设置?有些东西没有加起来,它只有几行,但它可以生成180mb?这是什么样的数据?您可以将resultSet写入csv,也可以运行导出到文件本身的sql语句。不,它可以是行数。最大值约为180 mb(一百万行),但最低值为1-2 kb,如一行或两行。这取决于对数据库的查询。数据的最终格式是什么?您可能需要引入一个带有缓存的中间件。你需要做大量的数据库连接,排序,过滤吗?还是只有一张桌子?以最终格式将数据存储在数据库中行吗?我想我无权访问它,我只能从数据库中读取数据,然后将其写入.csv文件。是的,它会经过不同的数据库连接、排序和筛选。。我不确定以最终格式存储是否可行,你能详细说明一下吗?
Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery(swSb);