Comparando Dados

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

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:

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 !!

Pessoal,

Alguem pode dar uma luz ???

Tks !!

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:

Legal,

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

valeu