你可以用一個for然後每到100時就rs.close一次。
再重新接著剛才的來開始。
offset什麼的。就可以了。

解决方案 »

  1.   

    看看到第几条记录的时候OutOfMemoryError的
    然后分步保存试试!
      

  2.   

    一个CSV文件的容量好象是65535吧?
      

  3.   

    我那么做,有很大的缺点阿!写入csv,如果,某一次sql出错了,也回滚了!csv文件不行啊,写进去,就写进去了!!!
      

  4.   

    一次当然不能取上1000万条数据,太大了oracle有这个功能的一次能让你去xxxx调。回滚不怕。。那儿出错了。再从那儿开始往csv中写。。
      

  5.   

    更正:oracle有这个功能的,一次能让你取xxxx条。
      

  6.   

    你一直读一直写啊,根本没有必要重新执行SQL语句吧更加别想全部读入内存中,读多少写多少
      

  7.   

    to ChDw(米) 老大,可否给点具体的提示!谢谢!
      

  8.   

    你用下executeBatch.
    先stmt.addBatchjdbc2.0有这个方法的
      

  9.   

    我的意思是你为什么要ArrayList呢?有啥必要??
    FileOutputStream fos = ...;
    while(rs.next()) {
      fos.write((rs.getString(1) + "," + rs.getString(2) + "\r\n").getBytes());
    }fos.close();
    rs.close();这样有什么问题吗?
      

  10.   

    to ChDw(米) 老大:用你的方法搞定了!谢谢!