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

大数据量写文件 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条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)