我目前正在编写一个 Java 程序,它遍历一个包含大约 4000 个 XML 文件的文件夹。
使用 for 循环,它从每个文件中提取 XML,将其分配给字符串“xmlContent”,并使用 PreparedStatement 方法 setString(2,xmlContent) 将字符串插入存储在我的 SQL Server 中的表中。
列“2”是 XML 类型的称为“数据”的列。
该过程有效,但速度很慢。它每 7 秒向表中插入大约 50 行。
有人对我如何加快这个过程有任何想法吗?
代码:
{ ...declaration, connection etc etc
PreparedStatement ps = con.prepareStatement("INSERT INTO Table(ID,Data) VALUES(?,?)");
for (File current : folder.listFiles()){
if (current.isFile()){
xmlContent = fileRead(current.getAbsoluteFile());
ps.setString(1, current.getAbsoluteFile());
ps.setString(2, xmlContent);
ps.addBatch();
if (++count % batchSize == 0){
ps.executeBatch();
}
}
}
ps.executeBatch(); // performs insertion of leftover rows
ps.close();
}
private static String fileRead(File file){
StringBuilder xmlContent = new StringBuilder();
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String strLine = "";
br.readLine(); //removes encoding line, don't need it and causes problems
while ( (strLine = br.readLine() ) != null){
xmlContent.append(strLine);
}
fr.close();
return xmlContent.toString();
}