Comparando Dados

5 respostas
Bandit

Pessoal se alguem puder dar uma “luz” eu agradeco.

Tenho que fazer uma transferencia entre duas bases Oracle, o problema é que tenho que comparar os dados destas tabelas (identicas) para ver quais dados foram alterados, adcionados, ou deletados.

Eu criei dois resultsets e sai comparando campo a campo.

A pergunta que não quer calar vem agora: :?:

Existe alguma maneira mais facil, de fazer isso ??
Alguma classe que compare as rows ou os resultsets ??

Tks pela ajuda !!

Bandit

5 Respostas

black_fire

Kra não sei se eu entendi direito, mas as tabelas estão em bancos diferentes correto…

:idea: Vc pode fazer uma triger nas tabelas informado códigos para cada acão em e registrar isso em uma terceira tabela, estas ações devem destar relacionadas com a chave primária de cada registro nesta outra tabela.
Esta tablela teria três colunas.

-------------------------------
TBL_ALTERACOES
-------------------------------
CODIGO    ACAO  VERIFICADO_SN
--------  ----  -------------
23546        1              S
23547        2              N
23548        1              N
23548        2              N
23547        0              N

Código: A chave primária da sua tabela de referência
Acao: Acao efetuada no registro. Ex: (0-Delete; 1-Insert; 2-Update)
Verificado_SN: Indica de esta ação já está atualizada nas duas tab.

Pronto agora é só varrer esta tabela e fazer a atualização dos registro.

[color=“red”]Super Importante:[/color] Para não haver problemas de redundancia vc terá que incluir um código nas tabelas para indicar se é o atualizador que está efetuando a ação, pois quando você estiver atualizando as tabelas a triger vai continuar incluindo as alterações na tabela, ai a atualização nunca vai acabar… Da uma estudada de como vc poderia resolver este problema… Tá muito cedo e o meu cerebro não tá funcionando direito ainda… :smiley:

:arrow: Agora se as tabelas estiverem no mesmo banco a própria triger pode fazer a atualização do registro. Sem precisar de software.

Um abraço… :wink:

Bandit

Rodrigo,

Em primeiro lugar valeu pela atenção.

Sim, as tabelas estão em bases diferentes, (as duas oracle) mas o que pega é mais em baixo. :cry:

O unico privilégio que tenho nessa base de origem é o “read”, e tem mais um “complicômetro”, tenho que validar algumas coisas, e codificar outras, por isso estou fazendo em java. (Ainda bem !! hehehe)

Não sei se a melhor opção é ficar comparando os Resultsets (campo a campo e linha a linha).
Pensei em jogar meus dois conjuntos dentro de uma HashTable, mas mesmo assim teria que comparar campo a campo.

Tive uma idéia essa noite não sei se boa ou ruim (ainda sou MIRIM em JAVA), se eu criar uma classe para cada entidade da minha tabela, e atribuir cada linha a esse Objeto e depois comparar os objetos ??
Essa seria uma forma mais eficaz ???

Ou teria alguma maneira melhor para eu fazer isso ?? :roll:

Pessoal tks !!

Bandit

Pessoal,

Alguem pode dar uma luz ???

Tks !!

cv1

Se voce nao pode comparar as coisas usando o proprio banco de dados (o que seria bom, nesse caso, eu acho), entao eh melhor mapear as tabelas para objetos e fazer a comparacao dali. :slight_smile:

Bandit

Legal,

Acho que vai ser esse o caminho mesmo. :shock:

valeu

Criado 9 de outubro de 2003
Ultima resposta 13 de out. de 2003
Respostas 5
Participantes 3