Java 如何将大尺寸的.txt文件数据分割成小部分并插入数据库?

Java 如何将大尺寸的.txt文件数据分割成小部分并插入数据库?,java,Java,下面是我读取和拆分文本文件内容的代码 try { br = new BufferedReader(new FileReader("F:\\Test.txt")); final char[] cbuf = new char[2048]; final int length = br.read(cbuf); cbuf[length] = '@'; String packet = new String(cbuf, 0

下面是我读取和拆分文本文件内容的代码

  try {

        br = new BufferedReader(new FileReader("F:\\Test.txt"));
        final char[] cbuf = new char[2048];
        final int length = br.read(cbuf);

        cbuf[length] = '@';
        String packet = new String(cbuf, 0, length + 1);
        final String[] splitedPacket=packet.split("@");
        for(int i=0;i<splitedPacket.length;i++)
        {
            if(splitedPacket[i].contains("POS"))
            {
                System.out.println(splitedPacket[i]+"@");
                preparedstatement=connection.prepareStatement("insert into inserttextfile([file]) values(?)");
                preparedstatement.setString(1, splitedPacket[i]+"@");
                preparedstatement.executeUpdate();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
试试看{
br=新的BufferedReader(新的文件读取器(“F:\\Test.txt”);
最终字符[]cbuf=新字符[2048];
最终整数长度=br.read(cbuf);
cbuf[length]='@';
字符串数据包=新字符串(cbuf,0,长度+1);
最终字符串[]splitedPacket=packet.split(“@”);

对于(inti=0;i您不使用readLine的方式很难做到这一点

    try {
        FileInputStream fis = new FileInputStream("F:\\Test.txt");
        reader = new BufferedReader(new InputStreamReader(fis));          
        String line = reader.readLine();
        while(line != null){

            //process your line here, it's just a String...   

            line = reader.readLine();
        }           

    } catch (FileNotFoundException ex) {
        ...
    } catch (IOException ex) {

通过不使用readLine,您可以很难做到这一点

    try {
        FileInputStream fis = new FileInputStream("F:\\Test.txt");
        reader = new BufferedReader(new InputStreamReader(fis));          
        String line = reader.readLine();
        while(line != null){

            //process your line here, it's just a String...   

            line = reader.readLine();
        }           

    } catch (FileNotFoundException ex) {
        ...
    } catch (IOException ex) {
  • 不要读整个文件
  • 在任何给定时间内,使用扫描仪读取并保持一次读取-以避免OOM
  • 如有可能,以批量方式执行Db操作。 如果您在一个事务中运行,请读取1000条记录并作为单独的批量插入进行处理
  • 不要读整个文件
  • 在任何给定时间内,使用扫描仪读取并保持一次读取-以避免OOM
  • 如有可能,以批量方式执行Db操作。 如果您在一个事务中运行,请读取1000条记录并作为单独的批量插入进行处理

  • 1.您没有读取整个文件读取规格。不要尝试一次读取所有文件内容。读取循环并插入数据库。使用扫描仪根据分隔符进行读取。记事本文件?您是指文本文件?@m0skit0 yes.txt文件。您在这里有一个良好的开端。1.您没有读取整个文件读取规格。不要尝试一次读取所有文件内容。读取循环d插入数据库。使用扫描仪根据分隔符读取。记事本文件?你是指文本文件?@m0skit0 yes.txt文件。你在这里有一个很好的开始。很好。使用它,我们可以读取到多少大小。你可以读取很多,可能至少在jvm设置下读取100兆字节。如果内存不足,请查看如何增加jvm内存大小e、 是的,它工作得很好。使用它,我们可以读取多达多少大小。你可以读取很多,可能是100兆字节,至少与你的jvm设置。如果你用完了内存,看看如何增加jvm内存大小。这不是一个问题。我很高兴你的问题得到了解决。请始终阅读规范。它有很多信息。不是一个问题。我很高兴你的问题得到了解决.一定要看说明书,里面有很多信息。