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内存大小。这不是一个问题。我很高兴你的问题得到了解决。请始终阅读规范。它有很多信息。不是一个问题。我很高兴你的问题得到了解决.一定要看说明书,里面有很多信息。