From 3c64376dd1d25aa605f113e820f819cd50f52fc0 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Wed, 5 Sep 2018 12:59:06 +0200 Subject: [PATCH] improve log importer - try importing line by line if the batch import did not work - print more informative error messages - fix writing failed imports to failed.txt --- .../de/diddiz/LogBlock/DumpedLogImporter.java | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/DumpedLogImporter.java b/src/main/java/de/diddiz/LogBlock/DumpedLogImporter.java index 687d54b..a871efa 100644 --- a/src/main/java/de/diddiz/LogBlock/DumpedLogImporter.java +++ b/src/main/java/de/diddiz/LogBlock/DumpedLogImporter.java @@ -41,27 +41,51 @@ public class DumpedLogImporter implements Runnable { String line = null; try { logblock.getLogger().info("Trying to import " + sqlFile.getName() + " ..."); + // first try batch import the whole file final BufferedReader reader = new BufferedReader(new FileReader(sqlFile)); + int statements = 0; while ((line = reader.readLine()) != null) { if (line.endsWith(";")) { line = line.substring(0, line.length() - 1); } - if(!line.isEmpty()) { + if (!line.isEmpty()) { + statements++; st.addBatch(line); - successes++; } } st.executeBatch(); conn.commit(); reader.close(); sqlFile.delete(); + successes += statements; logblock.getLogger().info("Successfully imported " + sqlFile.getName() + "."); - } catch (final Exception ex) { - logblock.getLogger().warning("Error while importing: '" + line + "': " + ex.getMessage()); - writer.write(line + newline); - errors++; - ex.printStackTrace(); - return; + } catch (final Exception ignored) { + // if the batch import did not work, retry line by line + try { + final BufferedReader reader = new BufferedReader(new FileReader(sqlFile)); + while ((line = reader.readLine()) != null) { + if (line.endsWith(";")) { + line = line.substring(0, line.length() - 1); + } + if (!line.isEmpty()) { + try { + st.execute(line); + successes++; + } catch (final SQLException ex) { + logblock.getLogger().severe("Error while importing: '" + line + "': " + ex.getMessage()); + writer.write(line + newline); + errors++; + } + } + } + conn.commit(); + reader.close(); + sqlFile.delete(); + logblock.getLogger().info("Successfully imported " + sqlFile.getName() + "."); + } catch (final Exception ex) { + logblock.getLogger().severe("Error while importing " + sqlFile.getName() + ": " + ex.getMessage()); + errors++; + } } } } finally {