[SP-pm] Queries em Batches no MySQL

Diego Piccolo onekip at gmail.com
Fri Nov 12 03:45:31 PST 2010


Pessoal, genial, blabos curti muito o post, e estou investigando mais pois
provavelmente utilizarei isso em no futuro em outro projeto,
a questão é que a base no final é um .xls/txt/csv geralmente vem de um
arquivo, eu percebi lendo as sugestões que estava tentando viajar muito
quando aparentemente um simples SELECT IN(..) já daria conta
(KISS)..

Mas sem dúvida gostei muito da ajuda, valeu pessoal!

Abraços,
Diego Piccolo..

2010/11/12 Blabos de Blebe <blabos at gmail.com>

> Se eu entendi bem, existe uma base com palavras "sujas".
>
> Existem rand(1..infinito) formas de se digitar "foo" errado. E eu
> "agarantiu", vc não vai conseguir criar um par chave-valor para cada
> forma errada. Pelo menos não num tempo computacionalmente razoável.
>
> Pegue a palavra errada, compare com um dicionário e limpe a base de
> dados. Aliás, faça a comparação e ache a palavra certa *antes* de ela
> ir parar no banco, se possível.
>
> Mas eu posso ter entendido o problema de forma errada.
>
> Abraços
>
> 2010/11/12 Renato Santos <renato.cron at gmail.com>:
> > Luiz,
> >
> > o metodo do Blabos é um automatizado.
> > No caso do Diego,
> > parece que muitos "alguéns" (rs) já digitaram o que é o correto e o de
> > determinado errado.
> >
> > Eu não entendi direito a duvida, mas eu faria, não que seja o mais
> rapido,
> > um INNER JOIN entre a palavra do usuario e a da tabela.
> >
> > Por exemplo, nao sei como são suas tabelas:
> >
> > SELECT a.id_usuario, b.limpo
> > FROM tabela_usuarios_porcos a
> > INNER JOIN tabela_de_para_porco_decente b ON (a.palavra_suja = b.suja)
> > WHERE a.id_usuario = Y;
> >
> > Claro, que no mundo real, você irá querer saber quais são as palavras que
> > não estão no banco, então poderia alterar para:
> >
> > SELECT a.id_usuario, a.palavra_suja, b.limpo
> > FROM tabela_usuarios_porcos a
> > LEFT JOIN tabela_de_para_porco_decente b ON (a.palavra_suja = b.suja)
> > WHERE a.id_usuario = Y;
> >
> > Assim, alguns registros estarão com o campo "limpo" em nulos.
> >
> > Mas, se for mesmo isso que você precise, eu faria assim:
> > UPDATE tabela_usuarios_porcos
> > SET limpo = _limpo
> > FROM (
> >  SELECT a.id_usuario as _id_usuario, b.limpo as _limpo
> >  FROM tabela_usuarios_porcos a
> >  INNER JOIN tabela_de_para_porco_decente b ON (a.palavra_suja = b.suja)
> >  WHERE a.id_usuario IN (lots..)
> > ) up
> > WHERE id_usuario = _id_usuario
> >
> > E depois um select com quem ficou com limpo "null"
> >
> > SELECT a.id_usuario, a.palavra_suja
> > FROM tabela_usuarios_porcos a
> > WHERE a.id_usuario IN (same lots..)
> > AND a.limpo IS NULL
> >
> >
> > Wherever,
> >
> > bye bye!
> >
> > 2010/11/12 Luis Motta Campos <luismottacampos at yahoo.co.uk>
> >>
> >> On 11/11/2010 07:01 PM, Blabos de Blebe wrote:
> >> > Vê se isso aqui tem alguma coisa a ver:
> >> >
> >> > http://blog.blabos.org/2008/12/faxina-depois-da-festa/
> >> >
> >> > Não vou poder falar muito agora (timeout) mas vê se não dá pra aplicar
> >> > o mesmo princípio.
> >>
> >> O Blabos está certo e o processo que ele montou é o melhor que se pode
> >> ter.
> >>
> >> Putamplexos
> >> --
> >> Luis Motta Campos is a DBA,
> >> Perl Programmer, foodie and photographer.
> >> _______________________________________________
> >> SaoPaulo-pm mailing list
> >> SaoPaulo-pm at pm.org
> >> http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> >
> >
> > --
> > Renato Santos
> > http://www.renatocron.com/blog/
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20101112/93dbae7b/attachment.html>


More information about the SaoPaulo-pm mailing list