В моей БД есть таблица с 6,312,391 регистрами. Я экспортировал данные во многие файлы с 2 миллионами регистров в каждом, но по некоторым причинам в последнем файле не все регистры были записаны, как я ожидал. У меня есть 3 файла с 2M regs и последний с 312,355 вместо 312,391.
Что могло случиться? Моя Java-процедура для получения данных выглядит следующим образом:
public void generarArchivoPorRegistros(int registersPerFile) {
CallableStatement cs = null;
ResultSet rs = null;
connect();
try {
cs = connection.prepareCall("{call pec_pec_proc(?)}");
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet) cs.getObject(1);
int numberOfFile = 1;
int registersWrote = 0;
try {
BufferedWriter bw = new BufferedWriter(
new FileWriter("SEDESOL_" + (numberOfFile * registersPerFile/(1000000)) + "M.txt"));
while (rs.next()) {
if (registersWrote == registersPerFile) {
bw.close();
numberOfFile++;
bw = new BufferedWriter(
new FileWriter("SEDESOL_" + (numberOfFile * registersPerFile/(1000000)) + "M.txt"));
registersWrote = 0;
}
bw.write(rs.getString(1));
bw.newLine();
registersWrote++;
}
} catch (IOException ex) {
Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex) {
Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
}
disconnect();
}