fr = new FileReader(writeFilePath);
br = new BufferedReader(fr);
while ((Line = br.readLine()) != null) {
st1 = new StringTokenizer(Line, "\t");
selectedCodeList = new String[st1.countTokens()];
i = 0;
while (st1.hasMoreTokens()) {
oneCode = st1.nextToken().trim();
selectedCodeList[i] = oneCode;
i++;
} arg0 = selectedCodeList[0].trim(); arg1 = selectedCodeList[1].trim();
arg2 = selectedCodeList[2].trim();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, arg0);
pstmt.setString(2, arg1);
pstmt.setString(3, arg2);
pstmt.executeUpdate();
pstmt.close();
}
} catch (Exception e) {

e.printStackTrace();
} finally {

fr = null;
br = null; }
我要插入几十万数据,上面的语句感觉效率很慢。请各位高手指点。谢谢。

解决方案 »

  1.   

    语法不错,觉得算法问题,个人经验是,凡是这种大批量数据处理,往往利用数据库自身的批处理功能。比如 sql server 中,可以通过导入命令导入,后台作为任务会自动调整效率的。建议把这种数据文件做成 excel或者其他数据库认同的格式,比如 csv 格式,然后通过程序调用后台的一个批处理命令。
    只是建议,仅供参考。
      

  2.   

    谢谢,根据客户的要求,他提交的是txt文件,还有没有其他办法
      

  3.   

    pstmt.close(); 
    你不要把这个关闭掉,还有,要把默认提交关闭,用手动提交的方式,当全部插入完成以后再提交。
      

  4.   

    pstmt.close();  
    不关闭,会发生异常java.lang.OutOfMemoryError: Java heap space
    把默认提交关闭是怎么关闭的?
      

  5.   

    1,把txt文件转化为csv格式,导入数据库
    1,把txt文件内容抽出写成insert语句的形势。批处理。