De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Marco Antonio Grecco Ribeiro
Data de Publicação: 30 de Setembro de 2006
Na infra-estrutura da UNIFESP - Universidade Federal de São Paulo (http://www.unifesp.br), utilizamos um servidor Linux/MySQL para suprir as necessidades de nossa comunidade quanto ao desenvolvimento de aplicações para a Web utilizando-se uma base de dados. Desta forma, muitas destas bases são criadas sem as devidas precauções e regulamentações propostas em diversas normas.
Nesta ultima semana enfrentamos um problema onde tivemos o esgotamento do espaço em disco da partição onde encontram-se as bases do MySQL. Isto acarretou na duplicação de todos os registros onde eram ausentes os índices, chaves primárias, campos únicos e afins.
O desespero tomou conta de nossa DBA, e a fim de mitigar o seu esforço em desenvolver diversos scripts para "limpar" as bases, utilizamos uma facilidade do MySQL para construir tabelas temporárias segundo um comando SQL.
No exemplo abaixo, temos a tabela chamada "danificada" com registros duplicados e a tabela "temp_danificada" onde colocarei os registros únicos, de acordo com a estrutura da tabela em questão :
CREATE TEMPORARY TABLE temp_danificada AS SELECT DISTINCT * FROM danificada
Com isto criamos a tabela temporária e podemos agora apagar os dados da tabela original :
DELETE FROM danificada;
E completando a operação, vamos reinserir os dados na tabela original :
INSERT INTO danificada(cod,nome) SELECT cod,nome FROM temp_danificada;
Estes comandos devem ser utilizados em sequência. Sugiro que seja montado um script SQL para executar uma só vez:
CREATE TEMPORARY TABLE temp_danificada AS SELECT DISTINCT * FROM danificada; DELETE FROM danificada; INSERT INTO danificada(cod,nome) SELECT cod,nome FROM temp_danificada;
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários