使用StringTockeizer来分析数据,
然后使用批量更新来提高效率,具体在
for(;;)
statement.addBatch(sql statement);
statetent.executeBatch();

解决方案 »

  1.   

    假如数据格式是这样的:
    -1
    1.60159E-04,1.73167E-04,2.15117E-05,9.21258E-06,7.20801E-06  
    2.46489E-06,1.97724E-06,1.50519E-06,1.21865E-06,4.23134E-06    
    -1
    2.60159E-04,2.73167E-04,6.15117E-05,5.21258E-06  
    3.46489E-06,4.97724E-06,4.50519E-06,6.21865E-06
    -1
    我已经知道他们对应的数据表。首先要读标志“-1”,确定“-1”和下一个“-1”之间内容是哪几行,然后再按照你的方法做,你觉得思路如何?谢谢!
      

  2.   

    假如数据格式是这样的:
    -1
    1.60159E-04,1.73167E-04,2.15117E-05,9.21258E-06,7.20801E-06  
    2.46489E-06,1.97724E-06,1.50519E-06,1.21865E-06,4.23134E-06    
    -1
    2.60159E-04,2.73167E-04,6.15117E-05,5.21258E-06  
    3.46489E-06,4.97724E-06,4.50519E-06,6.21865E-06
    -1
    我已经知道他们对应的数据表。首先要读标志“-1”,确定“-1”和下一个“-1”之间内容是哪几行,然后再按照你的方法做,你觉得思路如何?谢谢!
      

  3.   

    我在这里写了一个大体的例子,不知道是不是你想要的。经过我测试基本可以满足分析数据的要求了。如有什么问题继续跟贴.import java.io.IOException;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileInputStream;
    import java.util.StringTokenizer;public class Tea
    {
    public static void main(String[]args)
    {
    StringTokenizer token=null;
    String getLine=null;
    BufferedReader bufRead=null;
    File file=new File("E:/buf/udpLog.txt");
    try{
    bufRead=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    while(bufRead.readLine().equals("-1")){
    getLine=bufRead.readLine();
    if(getLine!=null){
    token=new StringTokenizer(getLine,",");
    while(token.hasMoreElements())
    {
    System.out.println(token.nextToken());
    }
    }
    else
    {
    break;
    }
    }
    }
    catch(FileNotFoundException e){}
    catch(IOException e){}
    }
    }
      

  4.   

    在我所述的数据格式中,记录条数不定,可能一条,也可能2条,也可能100条;只是一个数据表到下一个数据表,也即“-1”标志数据表的开始和结束,他们顺序不变。所以我要知道,第一个“-1”标志在哪一行,第二个标志在哪一行...然后我再次读取文件,在相邻两个标志之间一行行取数据,准备插入到对应的数据库中。当然,按照little0416(天涯海角) 师兄的说法,也可以一行行取,不过现在是想先判断标志在哪一行,然后再读取数据进行处理。可是得到标志在哪一行,有没有简便方法?(当然,按照上面的也可以做)。
      

  5.   

    另外,我利用statement.executeUpdate(sql statement)这个方法,读取一行,插入数据库一行数据;与你建议用的statement.addBatch(sql statement),读取一行,所有数据读完后利用statetent.executeBatch()两个效率谁高?
      

  6.   

    看来我要批量更新了。再问:在java中,能不能很方便的确定某文本文件中,某个字符串在哪一行?
      

  7.   

    在批量处理时,java.sql.BatchUpdateException: 批处理中出现错误: ORA-00913: 值过多。怎么解决