Ajuda, por favor!

Galera, estou com um problema. Tenho um programa pronto e rodando, porém da forma que está agora estou tendo um baixo desempenho. Então bolei outro esquema que para mim irá ter um melhor desempenho se funcionar, ao meu ver os dois estão iguais, porém feitos de formas diferentes, mas um da erro e o outro não, alguém poderia me ajudar dizendo onde e pq o erro acontece?

Primeiro método sem erro:

//Aqui eu formato minha string para inserir no banco, da forma que o banco pede.
            StringBuilder temp = new StringBuilder(25);
            temp.append(vetor[3]);
            temp.append("/");
            temp.append(vetor[2]);
            temp.append("/");
            temp.append(vetor[1]);
            temp.append(" ");
            temp.append(vetor[4]);
            temp.append(":");
            temp.append(vetor[5]);
            temp.append(":");
            temp.append(vetor[6]);
            temp.append(".");
            temp.append(vetor[7]); 
            ps.setInt(1, Integer.parseInt(vetor[0]));
            ps.setString(2, temp.toString());
            ps.setString(3, "'DD/MM/YYYY HH24:MI:SS.US'");
            ps.setInt(4, Integer.parseInt(vetor[7]));
            ps.setDouble(5, Double.parseDouble(vetor[8]));
            ps.setDouble(6, Double.parseDouble(vetor[9]));
            for(int i=7; i<=9; i++)
                ps.setInt(i, Integer.parseInt(vetor[i+3]));
            for(int i=10; i<=17; i++)
                ps.setDouble(i, Double.parseDouble(vetor[i+3]));
            for(int i=18; i<=21; i++)
                ps.setInt(i, Integer.parseInt(vetor[i+3]));
            ps.addBatch();
        }
        catch(SQLException ex){
            ex.printStackTrace();
            System.out.println("Impossivel de se inserir");
        }
//e aqui eu insiro no banco com o preparedstatement
ps = conn.prepareStatement("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(?,to_timestamp(?,?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);");

Agora a forma onde ocorre o erro:

            ps.setInt(1, Integer.parseInt(vetor[0]));
            ps.setString(2, vetor[3]);
            ps.setString(3, vetor[2]);
            ps.setString(4, vetor[1]);
            ps.setString(5, vetor[4]);
            ps.setString(6, vetor[5]);
            ps.setString(7, vetor[6]);
            ps.setString(8, vetor[7]);
            ps.setString(9, "'DD/MM/YYYY HH24:MI:SS.US'");
            ps.setInt(10, Integer.parseInt(vetor[7]));
            ps.setDouble(11, Double.parseDouble(vetor[8]));
            ps.setDouble(12, Double.parseDouble(vetor[9]));
            for(int i=13; i<=15; i++)
                ps.setInt(i, Integer.parseInt(vetor[i-3]));
            for(int i=16; i<=23; i++)
                ps.setDouble(i, Double.parseDouble(vetor[i-3]));
            for(int i=24; i<=27; i++)
                ps.setInt(i, Integer.parseInt(vetor[i-3]));
            ps.addBatch();
ps = conn.prepareStatement("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(?,to_timestamp(?/?/? ?:?:?.?,?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);");

Aparecendo este erro:

java.sql.BatchUpdateException: Entrada em lote 0 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(1/12/2007 0:0:9.751741400,'DD/MM/YYYY HH24:MI:SS.US'),751741400,-14.0534,-43.5762,-50,0,5,2.0,8.7,38.4,1.9,3.7,6.0,51.2,-0.0,0,0,0,1) foi abortada. Chame getNextException para ver a causa.
        at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2537)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1328)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:351)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
        at janelaPrincipal.getTabela(janelaPrincipal.java:76)
        at janelaPrincipal.<init>(janelaPrincipal.java:20)
        at janelaPrincipal$1.run(janelaPrincipal.java:54)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Para ter certeza que nao estava digitando algo errado, mandei antes de enviar para o banco imprimir uma string da minha string de insert e dos dois modos eu obtenho a mesma string, sem tirar nem por, exatamente a mesma. Nao sei onde está o meu erro, nem pq ele ocorre, se alguém poder me ajudar, estou a tarde toda fritando a cabeça sem conseguir resolver o problema.
Vlw novamente galera.

Estes seus campos não são do tipo timestamp ou datetime no banco? Envia a data direto pro banco (convertendo e tal), por que você tá manipulando tanta string assim? Não tá uma salada isso não? Procure aqui no fórum sobre como enviar datas para o banco…

Infelizmente o formato do banco é este mesmo. Trabalhamos com raios e são muitas informações, por isso tal precisão com a Hora, precisando passar os nanosegundos.

Tentei procurar algo sober como enviar datas pro banco, porém nao encontrei nada que me desse a opção de inserir o campo de nanosegundos e conseguir formatar do jeito certo para enviar para o banco - dd/mm/aaaa hh24h:mm:ss.us onde o us em postgre seria o nanosegundo, que nao encontrei outra como fazer.
Se alguém tiver alguma ideia eu aceito, vlw pela ajuda.

Alguém?

Você quer trabalhar com ângulos?

Se a resposta for sim, não é melhor trabalhar com radianos?

Eu já tenho um formato de banco e preciso continuar com este formato, e o formato da data que está dando essa diferença de performace.
Nao encontrei como formatar a parte dos nanosegundos para pode mostrar da forma que eu preciso dd/mm/aaaa hh24h:mm:ss.us, pois estou fazendo concatenação com Stringbuilder para fazer a transformação direto no banco, e creio que ai que está o gargalo.

Existe um modo de fazer tal conversão?!

Eu gostaria de te ajudar, mas não sei. Se você não conseguir transformar a data segundo a API do java, tente utilizar outra biblioteca.
Não sei se lhe ajuda:
http://commons.apache.org/sandbox/id/apidocs/org/apache/commons/id/uuid/clock/Clock.html
http://joda-time.sourceforge.net/userguide.html#Formatters