私は現在、約4000のXMLファイルのフォルダーをループするJavaプログラムを作成しています。
forループを使用して、各ファイルからXMLを抽出し、それを文字列'xmlContent'に割り当て、PreparedStatementメソッドsetString(2、xmlContent)を使用して、SQLServerに格納されているテーブルに文字列を挿入します。
列「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();
}