O que é melhor, usar ApplyUpdates() no ClientDataSet ou ExecSql no SqlDataSet ou SqlQuery
24/11/2015
0
Estou desenvolvendo uma aplicação que irá gravar registos em massa no banco de dados Firebird, Aguém sabe me dizer qual dessas formas de gravar registros seria mais Rápida e Segura?
Gabriel Alencar
Post mais votado
24/11/2015
Um tempo atrás precisei gravar em banco uma grande massa de dados. Testei diversas formas, e por incrível que pareça, a forma mais rápida foi gerar o SQL em um StringList e no final, adicionar em um Query e chamar o ExecSQL.
Quando for um volume menos expressivo, você pode ir adicionando em um ClientDataSet com Append e chamar o Post para deixar os dados em memória. No final, utiliza o ApplyUpdates(0).
Faça testes e veja qual se aplica melhor ao seu caso!
Luiz Menin
Mais Posts
24/11/2015
Gabriel Alencar
Atualmente uso esse conceito com o Append e ApplyUpdates, porem o que esta acontecendo é que movimento um grande numero de dados no mesmo SQL.
Ex.: Tenho dois CDS, um de origem e outro de destino. A cada passada do CDS de origem eu faço um ApplyUpdates no final do código gravando os registros em cada Field corresponente (Meio que um programa de migração de dados). Mas, e se ao inves de usar esse conceito eu gravasse por exemplo em um arquivo de Texto delimitado, linhas com Script INSERT pronto, e depois varria cada linha dando ExecSQL, será que teria algum ganho em termos de memória, velocidade, ... ?
Obs.: Os dados não precisariam de Controle de concorrência pois são dados únicos apenas em modo inserção, e não usa o conceito Cliente-Server pois tudo é feito na mesma muina do banco de dados.
Fico no aguardo!
24/11/2015
Gabriel Alencar
24/11/2015
Luiz Menin
24/11/2015
Gabriel Alencar
Obrigadão, ...
Clique aqui para fazer login e interagir na Comunidade :)