MySQL Unite Duas Tabelas

1

Situação: após falha (ou hack, eu ainda não tenho certeza) alguns na tabela vB_users desapareceram. Eu tenho backup de março dessa tabela, mas desde então houve novos registros. Existe uma maneira rápida de adicionar todas as linhas da tabela com falha à tabela de backup e reescrever as linhas existentes? Quero dizer, uni-los, mas a versão quebrada deve ter prioridade sobre a versão antiga.

    
por ABTOMAT 04.07.2012 / 16:56

2 respostas

1

Supondo que a sua tabela caiu em um banco de dados chamado atual, o backup restaurado está em um banco de dados chamado backup, e há uma chave primária chamada id:

create table current.tempUsers as select * from backup.vB_users ub where not exists (select 1 from current.vB_Users uc where uc.id = ub.id);

insert into current.vB_users select * from current.tempUsers; 

drop table current.tempUsers;
    
por 04.07.2012 / 17:14
1

Renomeie a tabela com falha, restaure o backup (de MARCH? ouch), renomeie esse , crie uma nova tabela com o nome antigo e faça algo como:

INSERT INTO vB_users SELECT * FROM crashed_table UNION SELECT * FROM restored_table;

Isso pode não funcionar corretamente no caso de registros que tenham a mesma PK, mas valores diferentes; provavelmente você pode fazer algumas coisas sorrateiras para corrigir isso.

    
por 04.07.2012 / 17:13