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

24/11/2015

10

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar