锁定老帖子 主题: 关于jdbc的一种功能的实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-27
不使用真分页查询使用假分页查出结果集就可以滚动了
|
|
返回顶楼 | |
发表时间:2012-02-27
jdbc有一个fetch_size 意思是每次从游标中取多少,oracle支持该参数,mysql不支持。这样每次加载指定的数目到内存中,而不是所有的 解决了内存消耗的问题
|
|
返回顶楼 | |
发表时间:2012-02-27
难道楼主说的不是javax.sql.RowSet及其几个子类?
|
|
返回顶楼 | |
发表时间:2012-02-27
我们公司的项目就是这样的 - -
|
|
返回顶楼 | |
发表时间:2012-02-27
不就是读取ResultSet么,有那么难吗?读一条处理一条,缺点就是长时间占用连接
|
|
返回顶楼 | |
发表时间:2012-02-27
xiaoZ5919 写道 jdbc有一个fetch_size 意思是每次从游标中取多少,oracle支持该参数,mysql不支持。这样每次加载指定的数目到内存中,而不是所有的 解决了内存消耗的问题
按照我的理解 JDBC本身就有这么一个功能,Statement里有一个setFetchSize方法就是用来做这个,不过这得看数据库支持不支持该参数,我看过mysql的驱动是不支持的 oracle支持 /** * Gives the JDBC driver a hint as to the number of rows that should * be fetched from the database when more rows are needed for * <code>ResultSet</code> objects genrated by this <code>Statement</code>. * If the value specified is zero, then the hint is ignored. * The default value is zero. * * @param rows the number of rows to fetch * @exception SQLException if a database access error occurs, * this method is called on a closed <code>Statement</code> or the * condition <code>rows >= 0</code> is not satisfied. * @since 1.2 * @see #getFetchSize */ void setFetchSize(int rows) throws SQLException; |
|
返回顶楼 | |
发表时间:2012-02-27
看lz的意思是要dump出一个很大的表。
如果我理解的正确的话,lz可以使用: 1. 将表逻辑分段(根据PK序列号,时间戳或者其他什么方式) 2. 自动生成相应的sql 3. 使用多线程并行执行这些sql 我曾经这样做过,从oracle dump了大约300G的数据. 如果还有更好的方法欢迎指教。 |
|
返回顶楼 | |
发表时间:2012-02-28
个人理解:我觉得楼主的东西并不是在于什么jdbc滚动,就是简单的分页,只不过是显示在一个页面里面,就像sqlplus那样,实现页面的数据Appende
|
|
返回顶楼 | |
发表时间:2012-02-28
最后修改:2012-02-28
各位大牛:
我不是不知道怎么写分页语句,而是数据太多了大概20G,分页基本上不可能了。我想实现像数据库客户端的那种功能,一次load一部分,这样将数据写入到一个文件中。数据库是oracle。 |
|
返回顶楼 | |
发表时间:2012-02-28
坏孩子 写道 不就是读取ResultSet么,有那么难吗?读一条处理一条,缺点就是长时间占用连接
这个试了不行的,读的多了还是会内存溢出 |
|
返回顶楼 | |