O que é melhor, usar ApplyUpdates() no ClientDataSet ou ExecSql no SqlDataSet ou SqlQuery

24/11/2015

4

Bom dia!
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?
Responder

Post mais votado

24/11/2015

Isso é muito relativo. Os dados necessitam de controle de concorrência? É cliente/servidor?
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!
Responder

Mais Posts

Pois é luíz, obrigado desde já.
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!
Responder
Entre usar TStringList e TXT delimitado, qual você acha melhor?
Responder

24/11/2015

Luiz Menin

Acredito que seja melhor você usar um TStringList por ficar em memória. Ao contrário do txt que acessando o disco, se tornaria um gargalo.
Responder
Ok, vou fazer uns testes aqui na aplicação então!
Obrigadão, ...
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira