fireinjava 2010-07-22 14:40
浏览 581
已采纳

大数据量写文件 Java heap space

[code="java"]
Statement stmt = ds.getConnection().createStatement();
stmt.setFetchSize(2000);
ResultSet rs = stmt.executeQuery(sqlQuery);
pw = new PrintWriter(new FileWriter(fileW, true));
StringBuilder dataStr2 = new StringBuilder("");
int c=0;
for (; rs.next(); pw.print(dataStr2.append("\r\n").toString())) {
dataStr2 = new StringBuilder("");
for (int i = 1; i <= 8; i++)
dataStr2.append(rs.getString(i));
if (c++ % 2000 == 0)
pw.flush();
}
[/code]
请问数据量上百万的,以上代码怎么优化!

广告离我远点 -_#

  • 写回答

2条回答 默认 最新

  • 普通网友 2010-07-30 20:25
    关注

    大致修改了下,如果还是很慢,建议你研究下你的SQL,因为写文件是耗不了多少时间的

    [code="java"]Statement stmt = ds.getConnection().createStatement();

    stmt.setFetchSize(2000);

    ResultSet rs = stmt.executeQuery(sqlQuery);

    pw = new PrintWriter(new FileWriter(fileW, true));

    StringBuilder dataStr2 = new StringBuilder("");

    int c=0;

    for (; rs.next(); ) {

    dataStr2 = dataStr2.delete(0, dataStr2.length()); // 避免构造大量对象实例
    for (int i = 1; i <= 8; i++)

    dataStr2.append(rs.getString(i));

    if (c++ % 2000 == 0) {
    pw.flush();
    // 200条数据写一次,没必要没读一条写一次
    pw.print(dataStr2.append("\r\n").toString())) ;

    }
    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?