conselho. Em todas as migrações que estou fazendo para postgresql, estou no
"programa antigo" criando uma ferramenta, para gerar arquivo texto, no
formato "insert into tabela (campo1, campo2, campo3....campo_n) values
(aaa,bbb,ccc,....,nnn)". Posteriormente utilizo o pgadmin e abro este
arquivo e todo ele...
Vai aqui a propaganda... estou migrando todos meus sistemas para utilizar
este banco de dados...
 
Santiago.

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Campus
Enviada em: sexta-feira, 28 de julho de 2006 07:53
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Migrar DBF para postgres


mais uma coisa...ou duas.

Usando objeto.insert tu tá deixando para o teu componente de acesso se
encarregar de montar o SQL, nesse caso pode acontecer que a cada inserção,
ele refaça o código SQL, é o caso do ZEUS, em ultima instância, ele pelo
menos verifica se nada foi mudado, gerando perda de tempo.

Outro detalhe, acessando o campo com  .Value tu está usando um tipo variant,
que é extremamente lento em relação aos tipos própios (Integer, Currency,
DateTime).

Agora imagine a situação, quando tu escreve:

dm.q_aih.fieldbyname(''+NomesCampos[Contador]+'').value :=
   dm.Tb_aih.fieldbyname((''+NomesCampos[Contador]+'')).value;

O programa tem que resolver a posiçao dos campos (buscar na tabela), fazer o
processo de conversão de tipos, e remontar o SQL. 90 vezes por registro.

Acredito que a performance deva melhorar muito se tu fizer com SQl puro.





----- Original Message ----- 
From: "guara" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Thursday, July 27, 2006 8:35 PM
Subject: Re: [delphi-br] Migrar DBF para postgres


sua rotina ta entrando em edicao e postando a cada campo e nao a cada
registro
  ----- Original Message ----- 
  From: romulocsouza
  To: delphi-br@yahoogrupos.com.br
  Sent: Thursday, July 27, 2006 7:38 PM
  Subject: [delphi-br] Migrar DBF para postgres


  Olá !

  Preciso escrever uma rotina para copiar os registros de arquivos dbfs
  para um banco postgres. Um dos arquivos tem 90 campos, por isso tentei
  resolver o problema escrevendo a rotina abaixo. Porém, ocorreram dois
  problemas: 1) ficou extremamente lento; 2) em determinado ponto o
  processamento é abortado. O Delphi não trata o erro, mas aparecem
  vários endereços de memória na tela.

  Algum colega pode me dar uma sugestão mais eficiente ? Existe a
  possibilidade de se criar, em tempo de execução, uma instrução SQL,
  tendo como parâmetros os campos do DBF, para gravação na tabela ?

  Obrigado.

  Rotina: (parte dela)

  ...
           while not dm.Tb_aih.Eof do
              begin
                 {*** insere o registro na tabela ***}
                 dm.q_aih.Insert;
                 for Contador:=1 to NumerodeCampos do
                    begin
                       with dm.q_aih do
                          begin
                             edit;
                             fieldbyname(''+NomesCampos[Contador]
  +'').value:=dm.Tb_aih.fieldbyname((''+NomesCampos[Contador]+'')).value;
                             post;
                          end;
                    end;


  * NomesCampos = array com os nomes dos campos do dbf e,
  consequentemente da tabela;
    NumerodeCampos = a quantidade de campos do dbf





[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos







 



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a