Ir para conteúdo
  • 0

Atualização de Dados


Anderson Santana Juju

Pergunta

  • Alunos

Fala Incomparaveis!
Então vou tentar explicar a minha situação aqui, então eu tenho um banco de dados, e ele sempre tem atualização mensal de informações, sendo acrescentando informações, como tambem tirado do banco de dados, eu queria saber se teriamos alguma forma de controlar isso, ou seja, que ele me mostrasse o que entrou de novo, e tambem o que saiu.

As atualizações são feitas via planilha de excel, não queria ficar fazendo manual essa questão.

Fico no aguardo

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
24 minutos atrás, Anderson Santana Juju disse:

Fala Incomparaveis!
Então vou tentar explicar a minha situação aqui, então eu tenho um banco de dados, e ele sempre tem atualização mensal de informações, sendo acrescentando informações, como tambem tirado do banco de dados, eu queria saber se teriamos alguma forma de controlar isso, ou seja, que ele me mostrasse o que entrou de novo, e tambem o que saiu.

As atualizações são feitas via planilha de excel, não queria ficar fazendo manual essa questão.

Fico no aguardo

Uma forma de você gerenciar as atualizações mensais do seu banco de dados, uma boa prática seria adicionar uma coluna de data de criação de registro no banco de dados. Essa coluna vai permitir que você controle quando cada registro foi adicionado.

Ex:

ALTER TABLE sua_tabela
ADD COLUMN data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Para comparar os registros que entraram e saíram do banco de dados após a atualização mensal, você pode criar uma tabela temporária para armazenar os dados do mês atual. Essa tabela temporária servirá como base para a comparação. Quando você carregar a nova planilha, insira os dados atualizados em uma tabela separada ou diretamente na tabela principal. Depois, compare as chaves primárias entre a tabela temporária e a nova tabela para identificar quais registros são novos, mantidos e quais foram removidos. Para identificar os novos registros, compare a tabela temporária com a nova tabela e veja quais registros estão na nova tabela, mas não na temporária. Para identificar os registros mantidos, compare a tabela temporária com a nova tabela e veja quais registros estão ambas tabelas. Para identificar os registros removidos, compare a tabela temporária com a nova tabela e veja quais registros estão na temporária, mas não na nova tabela.

algo mais ou menos assim:

 

DELIMITER $$

CREATE PROCEDURE comparar_registros()
BEGIN
    -- Cria uma tabela temporária para os dados atuais
    CREATE TEMPORARY TABLE temp_dados_atuais AS
    SELECT * FROM tabela_principal;

    -- Cria uma tabela temporária para os novos dados (carregados da planilha)
    CREATE TEMPORARY TABLE temp_dados_novos AS
    SELECT * FROM novos_dados_planilha;

    -- Cria uma tabela temporária para armazenar os resultados da comparação
    CREATE TEMPORARY TABLE temp_dados_comparados (
        chave_primaria INT,
        status VARCHAR(10)
    );

    -- Inserir os registros mantidos (existem em ambas as tabelas)
    INSERT INTO temp_dados_comparados (chave_primaria, status)
    SELECT atual.chave_primaria, 'mantido' 
    FROM temp_dados_atuais atual
    JOIN temp_dados_novos novo ON atual.chave_primaria = novo.chave_primaria;

    -- Inserir os registros novos (existem apenas na nova tabela)
    INSERT INTO temp_dados_comparados (chave_primaria, status)
    SELECT novo.chave_primaria, 'novo' 
    FROM temp_dados_novos novo
    LEFT JOIN temp_dados_atuais atual ON novo.chave_primaria = atual.chave_primaria
    WHERE atual.chave_primaria IS NULL;

    -- Inserir os registros removidos (existem apenas na tabela atual)
    INSERT INTO temp_dados_comparados (chave_primaria, status)
    SELECT atual.chave_primaria, 'removido' 
    FROM temp_dados_atuais atual
    LEFT JOIN temp_dados_novos novo ON atual.chave_primaria = novo.chave_primaria
    WHERE novo.chave_primaria IS NULL;

    -- Atualiza a tabela principal com base nos dados comparados
    -- Este passo depende do que você deseja fazer com os registros identificados como mantidos, novos e removidos.
    -- Por exemplo, você pode querer excluir os registros marcados como 'removido', ou atualizar os 'mantido', ou inserir os 'novo'.
    -- Isso pode ser feito com base nos resultados armazenados em 'temp_dados_comparados'.

    -- Exemplo de manipulação de registros:
    -- DELETE FROM tabela_principal WHERE chave_primaria IN (SELECT chave_primaria FROM temp_dados_comparados WHERE status = 'removido');
    -- INSERT INTO tabela_principal (coluna1, coluna2, ...) SELECT * FROM temp_dados_novos WHERE chave_primaria IN (SELECT chave_primaria FROM temp_dados_comparados WHERE status = 'novo');

END$$

DELIMITER ;

 

Editado por Alex Pereira
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...