Analisar e comparar dados usando Coldfusion e MySQL
Primeiro, vou explicar o que preciso fazer, então como eupensar Eu posso conseguir isso. Meu plano atual parece muito ineficiente em teoria, então minha pergunta é se existe uma maneira melhor de realizá-lo.
Eu tenho 2 tabelas - vamos chamá-los de "Produtos" e "Products_Temp", ambos são idênticos. Eu preciso baixar um grande número de arquivos (XML ou XLS) que contêm detalhes do produto (estoque, preços, etc) de fornecedores. Estes são então analisados na tabela Products_Temp. No momento, pretendo usar o CF Scheduled Tasks para lidar com o download, e a Navicat para fazer a análise real - estou feliz o suficiente para que isso seja adequado e eficiente o suficiente.
O próximo passo é onde estou lutando - depois que o arquivo tiver sido baixado e analisado, preciso procurar por alterações nos dados. Isso será comparado com a tabela Produtos. Se uma alteração for encontrada, essa linha deverá ser adicionada ou atualizada (se precisar ser removida, será necessário sinalizá-la, em vez de apenas excluí-la). Depois que todos os dados tiverem sido comparados, a tabela products_temp deverá ser esvaziada.
Estou ciente de métodos para comparar tabelas e sincronizá-los de acordo, no entanto, o problema que tenho é o fato de que eu vou estar lidando com vários arquivos de diferentes fontes. Eu considerei usar apenas a tabela de produtos e acrescentar / atualizar, mas não tenho certeza de como eu poderia gerenciar o requisito "sinalizador excluído".
Agora, a única maneira que euconhecer Eu posso fazê-lo funcionar é fazer um loop através da tabela products_temp, fazer vários cfquerys e excluir a linha depois de concluída. No entanto, isso parece incrivelmente ineficiente, e considerando o fato de que provavelmente estaremos lidando com centenas de milhares de linhas, é improvável que seja eficaz se atualizarmos tudo diariamente.
Quaisquer sugestões ou conselhos sobre uma rota melhor seriam apreciados!