@Override
    public void writeRow(TableInfo table, Map<Cols, String> data) throws IOException {
        try {
            PreparedStatement p = inserts.get(table.getName());
            if (p == null) {
                throw new RuntimeException("Failed to create prepared statement for: " + table.getName());
            }
            dbUtil.batchInsert(p, table, data);
            LastInsert lastInsert = lastInsertMap.get(table.getName());
            lastInsert.rowCount++;
            long elapsed = System.currentTimeMillis() - lastInsert.lastInsert;
            if (
                //elapsed > commitEveryXMS ||
                    lastInsert.rowCount % commitEveryXRows == 0) {
                LOG.info("writer ({}) on table ({}) is committing after {} rows and {} ms", myId, table.getName(), lastInsert.rowCount, elapsed);
                p.executeBatch();
                conn.commit();
                lastInsert.lastInsert = System.currentTimeMillis();
            }
        } catch (SQLException e) {
            throw new IOException(e);
        }
    }
This is still in its early stages.  The idea is to
get something working with h2 and then add to that
as necessary.
<p>
Beware, this deletes the db file with each initialization.
<p>
Each thread must construct its own DBWriter because each
DBWriter creates its own PreparedStatements at initialization.
tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/io/DBWriter.java