BufferedReader bufferedreader = new BufferedReader(new FileReader(文件));
String stxt = bufferedreader.readLine();
读出文件,再一条一条插入应该可以吧。

解决方案 »

  1.   

    你的语句只能在oracle的sqlplus里执行吧?java里应该不能执行
      

  2.   

    一條條拿出來。看到update,insert,delete的話就從那開始。結束是用;來結束。試試。
      

  3.   

    楼上的各位。先谢谢。这个我是用statement.addBatch(sql)做的。已成功了。但有几个特殊情况。当一行结尾有“;”但SQL语句并没有结束的。
    我是按照COMMIT来判断语句结束的。这样又有一种新的问题了。。一个SAVEPOINT和一个COMMIT之间可能出现多条SQL。我觉得这里应该可以用递归的方法把SQL解析出来。不过还是不太会写。头有点大。。
      

  4.   

    lcwlyl(网络幽灵) :
    我这个文件比较大,多的时候有几万行,最少也有一万左右。如果放在buffer里面这个方法不是太好的。
      

  5.   

    你可以自定义一些关键字,程序里按关键字来解析这些个语句,不一定需要按行来读
    比如:
    InsertStar: Statement :InsertEnd
    按你的要求,要SQL语句就只取你定义的标记之间的东西就可以了,别的也一样的道理
      

  6.   

    跨行读取有时候会漏字符,当然这个机率并不高,但如果是SQL语句,少了字符就会出问题啊
      

  7.   

    所以说这个地方很郁闷。他的SQL可能存有多行。在看几天吧。。如果不行就接帖了。
      

  8.   

    buffer也不一定全读啊,
    0) 设置一个Set,作为分析器,存储所有用作分割的关键字
    1) 设置一个读取行数,比如n放到buffer
    2-1) 每次读一个buffer,去匹配Set,如果匹配到了,就将语句分离出来,并记住位置
    2-2) 如果没读到,就扩大buffer(再读入一段n行),重复2-1
    3) 从记住的位置继续,重复2-1
    需要注意的是,位置需要用二维的
      

  9.   

    有个类tokenizer,可以读出每个单词