论坛首页 Java企业应用论坛

关于jdbc的一种功能的实现

浏览 20195 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-27  
不使用真分页查询使用假分页查出结果集就可以滚动了
0 请登录后投票
   发表时间:2012-02-27  
jdbc有一个fetch_size 意思是每次从游标中取多少,oracle支持该参数,mysql不支持。这样每次加载指定的数目到内存中,而不是所有的 解决了内存消耗的问题
0 请登录后投票
   发表时间:2012-02-27  
难道楼主说的不是javax.sql.RowSet及其几个子类?
0 请登录后投票
   发表时间:2012-02-27  
我们公司的项目就是这样的  - -
0 请登录后投票
   发表时间:2012-02-27  
不就是读取ResultSet么,有那么难吗?读一条处理一条,缺点就是长时间占用连接
0 请登录后投票
   发表时间: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;

0 请登录后投票
   发表时间:2012-02-27  
看lz的意思是要dump出一个很大的表。
如果我理解的正确的话,lz可以使用:
1. 将表逻辑分段(根据PK序列号,时间戳或者其他什么方式)
2. 自动生成相应的sql
3. 使用多线程并行执行这些sql
我曾经这样做过,从oracle dump了大约300G的数据.

如果还有更好的方法欢迎指教。
0 请登录后投票
   发表时间:2012-02-28  
个人理解:我觉得楼主的东西并不是在于什么jdbc滚动,就是简单的分页,只不过是显示在一个页面里面,就像sqlplus那样,实现页面的数据Appende
0 请登录后投票
   发表时间:2012-02-28   最后修改:2012-02-28
各位大牛:
我不是不知道怎么写分页语句,而是数据太多了大概20G,分页基本上不可能了。我想实现像数据库客户端的那种功能,一次load一部分,这样将数据写入到一个文件中。数据库是oracle。
0 请登录后投票
   发表时间:2012-02-28  
坏孩子 写道
不就是读取ResultSet么,有那么难吗?读一条处理一条,缺点就是长时间占用连接

这个试了不行的,读的多了还是会内存溢出
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics