[SP-pm] Comparando grande massa de dados

Otavio Pereira otavio.pereira at gmail.com
Thu May 20 10:04:06 PDT 2010


Na verdade, eu acho que entendi.

Ele tem pks identicas nos dois bancos, então ele quer tratar o registro
inteiro (50+ colunas) como uma string e gerar um hash disso e então comparar
com os hashes obtidos no outro banco. Onde os hashs não baterem, levantará
um flag (a tabela dedo-duro que ele comentou) para averiguação.

Se for isso, o único problema que vejo é qto aos charsets dos bancos e
caracteres extras que eles possam inserir (tipo fazer padding a direita com
espaços ou 0x0), sei lá.

Já tentei fazer isso com um banco de dados médico pra tentar diferenciar
homônimos, funcionou mais ou menos... mas é que tinha muitos José Silvas e
Marias Severinas no banco rs.

Espero que tenha entendido certo!

[]
Otávio


2010/5/20 Andre Carneiro <andregarciacarneiro em gmail.com>

> Nossa! Q confusão!
>
> Deixa eu ver se entendi:
>
> 1) Você quer sincronizar uma base Oracle com uma Sybase(vice-versa???);
> 2) Se vc já vai carregar coisas com o sqlldr numa tabela temporária, já na
> base de produção, pra que vc precisa de hashes??? Não entendi. Se os dados
> já estão lá, compara com a tabela em produção diretamente com SQL,
> procedures etc...(se eu estiver falando besteira, pode me xingar);
> 3)Você já pensou em utilizar alguma ferramenta de migração de dados ? Se
> isso é crítico no seu trabalho, talvez(só uma sugestão) uma solução pronta
> possa resolver de maneira mais efetiva( não sei se resolve, mas vi essa
> aqui:
> http://www.swissql.com/products/oracle-to-sybase/oracle-to-sybase.html );
>
>
> Cheers!
>
>
>
> 2010/5/20 Guarnieri, Carlos [ICG-IT] <carlos.guarnieri em citi.com>
>
>  o problema eh q teria de lidar com o sqldr (oracle) e o bcpin (sybase).
>> Nao posso usar base de teste; apenas prod 2 prod. Os arquivos vem de
>> mainframe. Preciso comparar conteudo de campos para garantir que estejam em
>> sincronia (nao.. nao tem um lastUpdateDate....) Sao dados sensiveis de
>> companhias que tem permissao do FED para transferir certas quantias...
>>
>> Aqui esta uma ideia:
>>
>>     1) pego o arquivo e usando a PK dele (um codigo unico e obrigatorio,
>> global da empresa no FED) gero um hash pros campos que quero comparar
>>         carrego esse arquivo no dbms  que quero fazer comparacao (usando
>> sqldr / bcpin) - talvez de 300 em 300 mil
>>         (hj o cadastro eh mais de 1 milhao mas continua crescendo. nao
>> posso correr o risco de enche a temp do banco)
>>     1.1) pros IDS carregados gero em outra tabela temporaria os hashes
>> dos registros que ja estavam no dbms e comparo os hashes.
>>     1.2) Os IDS que tem hashes separados vao pra minha tabela dedo duro
>> dos registros fora de sync.
>>     1.3) limpa a tabela dos hashes e repete 1.1 e 1.2 ateh o final do
>> arquivo
>>     1.4) manda os arquivos fora de sync pro mainframe, apaga as temp,
>>     1.5) cd /pub; more beer;  while(true) do; sleep; done
>>
>> razoavel?
>>
>>
>>
>>
>>  ------------------------------
>> *From:* saopaulo-pm-bounces+carlos.guarnieri=citi.com em pm.org [mailto:
>> saopaulo-pm-bounces+carlos.guarnieri<saopaulo-pm-bounces%2Bcarlos.guarnieri>
>> =citi.com em pm.org] *On Behalf Of *Andre Carneiro
>> *Sent:* quinta-feira, 20 de maio de 2010 08:41
>>
>> *To:* saopaulo-pm em mail.pm.org
>> *Subject:* Re: [SP-pm] Comparando grande massa de dados
>>
>> Existe o sqlldr para Oracle(mas você já sabia disso :D). Ele serve
>> exatamente para carregar grandes quantidades de dados rapidamente.
>>
>> Existem alguns módulos para manipular e executar cargas de dados no CPAN,
>> utilizando o SQLLoader. O que eu achei mais simples foi esse aqui:
>>
>> http://search.cpan.org/~ezra/Oracle-SQLLoader-0.9/lib/Oracle/SQLLoader.pm<http://search.cpan.org/%7Eezra/Oracle-SQLLoader-0.9/lib/Oracle/SQLLoader.pm>
>>
>> O problema é que não é atualizado desde 2006!!!
>>
>>
>>
>> 2010/5/19 Guarnieri, Carlos [ICG-IT] <carlos.guarnieri em citi.com>
>>
>>>  entao... sao oracle e sybase... mas como os arquivos sao grandes to com
>>> medo de joga pro banco.
>>>
>>
>> Deixe disso! Faça muitos testes em tabelas temporárias(se possível em uma
>> base de testes), e seja feliz!
>>
>>
>>> Tava pensando mais em pegar os dados e comparar no unix...
>>>
>>>
>>
>> Que tipo de comparação?
>>
>>
>>
>>>  o q acham?
>>>
>>
>> Não sei, mais detalhes por favor(se possível)!!!
>>
>>
>>
>>>
>>>  ------------------------------
>>> *From:* saopaulo-pm-bounces+carlos.guarnieri=citi.com em pm.org [mailto:
>>> saopaulo-pm-bounces+carlos.guarnieri<saopaulo-pm-bounces%2Bcarlos.guarnieri>
>>> =citi.com em pm.org] *On Behalf Of *Andre Carneiro
>>> *Sent:* quarta-feira, 19 de maio de 2010 18:09
>>> *To:* saopaulo-pm em mail.pm.org
>>> *Subject:* Re: [SP-pm] Comparando grande massa de dados
>>>
>>>
>>>
>>> Em 19 de maio de 2010 17:39, Guarnieri, Carlos [ICG-IT] <
>>> carlos.guarnieri em citi.com> escreveu:
>>>
>>>> Pessoal,
>>>> Preciso fazer a reconciliacao de um banco de dados. Essa reconciliacao
>>>> tera de rodar automatica todo final de semana para garantir que alguns
>>>> sistemas estejam em sync. Não temos poder sobre o formato do arquivo que
>>>> vamos receber, mas terei de comparar com algumas tabelas em nosso banco de
>>>> dados.
>>>>
>>>> Enfim temos umas 50 colunas (algumas de endereco [char 64] / mas a
>>>> maioria char 20]) e mais de 1 milhao de registros. Entao não quero fazer um
>>>> sqlload em nosso banco para comparar via banco.
>>>> Alguem tem alguma sugestao interessante de como comparar esses dados?
>>>> Criar tabela de espalhamento e testar um contra outro, exportar o banco no
>>>> mesmo formato do arquivo e fazer diff no unix (:d)...
>>>>
>>>> Sugestoes são bem vindas.
>>>>
>>>>
>>> Certo!
>>>
>>> 1) qual RDBMS você está usando (Postgres, Oracle, SQLServer, MySQL) ?;
>>>
>>> 2) Você mencionou sqlload. Então eu suponho que vc vai ter que
>>> transformar os dados no formato que o sqlload aceita. Se for isso, você pode
>>> usar templates, por exemplo. Um template para cada arquivo recebido com
>>> formato específico, e alguns módulos que receberão os dados e usarão os
>>> templates para formatá-los corretamente;
>>>
>>> 3) Exitem módulos para você trabalhar com o sqlload no CPAN. Sugiro que
>>> você dê uma procurada e posta o RDBMS que vc está usando para que nós
>>> possamos sugerir algum módulo para você;
>>>
>>>
>>>
>>> Cheers!
>>>
>>>
>>>>
>>>> Valew
>>>> _______________________________________________
>>>> SaoPaulo-pm mailing list
>>>> SaoPaulo-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>
>>>
>>>
>>>
>>> --
>>> André Garcia Carneiro
>>> Analista/Desenvolvedor Perl
>>> (11)82907780
>>>
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>
>>
>>
>> --
>> André Garcia Carneiro
>> Analista/Desenvolvedor Perl
>> (11)82907780
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100520/e2a18390/attachment-0001.html>


More information about the SaoPaulo-pm mailing list