tenho uma aplicação que ler um txt e e transforma cada linha em um registro no banco, so que para cada linha eu to mandando da um Stmt.execute(); , so que tenho mas de 2 mil linhas no txt, então são 2000 update no banco, isso torna o sistema lento, estava usando Mysql, troquei para postrgres e o tempo diminui pela metade, mas mesmo assim acho muito lento, pesquisei bastante mas não consegui achar nada referente a Buffer para banco, existe algum meio de ficar colocando os registro em algum buffer e a cada 500 registros da um commit…? em outras linguagens tem como fazer isso, como e em java…?
Buffer para gravar no BD
2 Respostas
Você pode tentar diminuir o tempo de insert usando o addBatch() e executeBatch()
Dá uma olhada nesse exemplo.
G
Já que esta usando o postgres, tenta usar o comando COPY do mesmo.
Voce monta um arquivo texto separado por algum caractere (por exemplo, ‘|’), e com os campos já na ordem dos proprios campos do banco de dados.
Depois, só dar o copy ( o arquivo precisa estar no servidor em que o banco de dados está )
COPY SUATABELA TO ‘/caminho_no_servidor/seu_arquivo_texto’ USING DELIMITERS ‘|’;
Provavelmente em menos de 20 segundos, terá seus 2 mil registros no banco de dados.
Abraços.
Criado 7 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 2
Participantes 3
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo