 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
souzacruz001 Aprendiz

Registrado: Quarta-Feira, 11 de Junho de 2014 Mensagens: 273
|
Enviada: Ter Jun 24, 2014 9:59 am Assunto: Migração de Dados |
|
|
Bom dia, pessoal.
Bem, é o seguinte.
Preciso fazer uma migração de dados, de um banco de dados FDB para o PostreSQL, até aí tudo bem. Porém, o Contas a Receber do cliente, possui mais de 850 mil títulos, desde 1996. Entrei em contato com o mesmo e ele realmente que todos os títulos no sistema atual.
O contas a receber do meu sistema é da seguinte forma, possui 2 tabelas dos títulos em aberto e baixados, caso um título já esteja liquidado(total ou parcial), eu lanço ele na tabela de baixados, caso contrario apenas na tabela de títulos em aberto.
Agora a pergunta é, qual a melhor forma de fazer isso? Pois está demorando muito. Pensei em exportar o resultado do SQL que eu preciso do banco deles e simular a tabela deles no meu banco e fazer um insert a partir de um select, pois é beeem mais rápido, só que pela quantidade de registros não há esse possibilidade de exportar o SQL.
Alguém conhece outra forma?
Obrigado.
Lucas de Souza Cruz |
|
| Voltar ao Topo |
|
 |
mobius1qwe Aprendiz

Registrado: Quarta-Feira, 8 de Dezembro de 2010 Mensagens: 146
|
Enviada: Ter Jun 24, 2014 9:34 pm Assunto: |
|
|
Você poderia fazer uma aplicação adaptativa pra isso...
Colocaria 2 componentes DataSet, 2 componentes DBTable (eu acho que é assim mesmo) com 2 Connection.
Cada Connection vai alimentar uma tabela, aí ce renomeia os componentes pra facilitar sua vida de forma que ce vai ter 1 connection, 1 dataset e 1 table pra cada banco.
Feito isso, ce faz um botão ou um spinner, ou um DBToolbar, pra poder ir mudando de tabela e um botão pra disparar o evento de migrar.
Basicamente ce vai fazer um "while not DataSet.EoF do begin" mandar pegar todos os dados na ordem que aparecem usando um for e esperar migrar os dados.
o código fica alguma coisa próxima disso daqui:
| Código: | while not DataSet1.Eof do begin
for I := to DataSet1.FieldCount -1 do begin
DataSet2.FieldByName(DataSet1.Fields.Fields[I].FieldName) := DataSet1.FieldByName(DataSet1.Fields.Fields[I].FieldName);
end;
DataSet.Next;
end; |
Desse jeito aí, com adaptações é claro, ce iria gravar linha por linha da tabela de origem (DataSet1) na tabela de destino(DataSet2).
Agora não estou com muito tempo, mas se caso você não conseguir resolver o problema, posto aqui o código que eu fiz pra migração de tabelas pra te ajudar a resolver isso daí. |
|
| Voltar ao Topo |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Qua Jun 25, 2014 11:14 am Assunto: |
|
|
Faz um exportador por demanda....ainda assim vai demorar, mas será menos sucetivel a falhas...
Tendo a quantidade total de registros da origem, peça para importar de 100 mil registros por vez...e quando chegar nesse limite voce comita no banco novo...ainda assim demora, mas é mais confiável. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|