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