Problema com executeBatch();

Galera, tenho um programa que apenas le um arquivo e popula um banco, o problema é a quantidade de dados, cada arquivo possui cerca de 1milão de linhas.
Estão estou utilizando o executeBatch(); para conseguir melhor performace. Adiciono 100k em 100k de linha para nao estourar a memoria, porém em uma dessas linhas deu problema com o banco(creio que algum campo com valor maior que o máximo permitido pelo banco) e deu erro, até ai tudo bem, o problema é, como eu mando pro banco de 100k em 100k linhas, quando da erro em uma eu perco o restante que ainda faltavam inserir desse pacote de 100k e então ele pula pro próximo pacote de 100k de linhas, entenderam?

O programa me envia este código de erro:

java.sql.BatchUpdateException: Batch entry 8,659 insert into dat_tr_stroke (dat_versao_ualf,dat_data,dat_nanosegundo,dat_latitude,dat_longitude,dat_corrente_pico_ka,dat_multiplicidade,dat_numero_sensores,dat_graus_liberdade,dat_azimute_elipse,dat_semieixo_maior,dat_semieixo_menor,dat_chiquadrado,dat_tempo_subida,dat_largura_pulso,dat_maxima_derivada,dat_flag_intranuvem,dat_flag_angulo,dat_flag_sinal,dat_flag_tempo) values(0,to_timestamp(26/2/2008 0:27:55.995582215,'DD/MM/YYYY HH24:MI:SS.US'),995582215,-16.6656,-44.6357,-22,0,2,1.0,62.0,5.8,0.7,4.1,4.4,23.4,-0.0,0,1,0,1) was aborted.  Call getNextException to see the cause.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2537)
        at org.postgresql.core.v3.QueryExecutorImpl$ErrorTrackingResultHandler.handleError(QueryExecutorImpl.java:283)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1328)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:332)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
        at testePopularBanco.getTabela(testePopularBanco.java:54)
        at testePopularBanco.main(testePopularBanco.java:18)

Como que eu faço para nao perder o restante de linhas que estavam neste pacote de 100k que eu estava enviando? É possível se gerar um log para saber em qual linha foi encontrado o programa e após isso continuar enviando as linhas normalmente?
Espero ter sido claro na minha dúvida, se não avisem que tento explicar melhor. Se alguém tiver alguma solução, valeu galera.

Isso mesmo, salve a query em um log ou algo assim quando der um excpetion…

Salvar a query tudo bem, o problema é que eu perco o restante das linhas que eu estava inserindo, entende?
Eu mando de 100k em 100k, se da erro na linha 8000 eu perco o restante e dados não são enviados para o banco.