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!

questionAnswers(3)

yourAnswerToTheQuestion