У меня есть задача прочитать CLOB-файлы из базы данных Oracle 9i и записать их в файлы. У меня есть работы для небольших файлов, но в случае больших файлов, около 200 МБ, это занимает около 5 часов для одного файла, что совершенно неприемлемо. Я уверен, что это можно сделать быстрее, но я не знаю, как это сделать. Это то, что у меня есть:Чтение и запись больших файлов CLOB из базы данных Быстрее
//get the Clob record from the database and convert it to String
public String getClobRecord() {
Connection conn;
Clob xmlCont;
ResultSet rset;
PreparedStatement stmt;
try {
conn = db.prepareConn();
String sql = "select a.clob_clm from xml_statement a where period_id = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, pid);
rset = stmt.executeQuery();
while (rset.next()) {
xmlCont = rset.getClob(1);
xml = ClobStringConversion(xmlCont);
}
stmt.close();
DBConnect.closeConn(conn);
} catch (SQLException asd) {
log.fatal(asd.getMessage());
} catch (IOException asd) {
log.fatal(asd.getMessage());
}
return xml;
}
//My CLOB to String Conversion Method
public static String ClobStringConversion(Clob clb) throws SQLException, IOException {
if (clb == null) {
return "";
}
StringBuilder str = new StringBuilder();
String strng;
BufferedReader br = new BufferedReader(clb.getCharacterStream());
while ((strng = br.readLine()) != null) {
str.append(strng);
}
return str.toString();
}
//Write the String to File
public void writeXmlToFile(String fileDir, String xmlFileName) {
File xmlfile = new File(fileDir + "/" + xmlFileName);
xml = this.getClobRecord();
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(xmlfile));
bw.write(formatXmlFile());
bw.close();
} catch (IOException asd) {
log.fatal(asd.getMessage());
}
}
Что именно следует изменить для размещения очень больших файлов CLOB?
Я удивлен, что вы ждали 5 часов для завершения теста. – immibis
Не совсем :) Оставшись на ночь ... Проверял журналы позже .. Это заняло много времени. – ErrorNotFoundException
Сколько времени в строках данных? – immibis