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();
// System.out.println(arg0);
// System.out.println(arg1); 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.   

    用程序把数据处理好保存到文件中,然后用load data infile的方式加载
      

  2.   

    LOAD DATA  LOCAL INFILE 'c:/upload/b.txt' INTO TABLE users(userName,userpwd,sex) fields terminated by '\t' LINES TERMINATED BY '\r\n';
    语法错误。
    LOAD DATA  LOCAL INFILE 'c:/upload/b.txt' INTO TABLE users(userName,userpwd,sex)
    最后一个数据有特殊符号。
    LOAD DATA  LOCAL INFILE 'c:/upload/b.txt' INTO TABLE users
    插入的只有2个字段。
      

  3.   

    c:/upload/b.txt
    的内容是什么? 贴出一行来看一下。
    == 思想重于技巧 ==
      

  4.   

    如有特殊字符 , 可用LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test
      FIELDS TERMINATED BY ','  LINES STARTING BY 'xxx';指出 列分隔符,行分隔符,转义符等
    == 思想重于技巧 ==
      

  5.   

    可以先把表引擎改为MYISAM,然后屏蔽掉键,插入速度那叫个飞快,然后再修改引擎为你要的。