De qualquer forma, o problema será ler as 200000 linhas do xls.
A partir do momento que obtiver estes dados, faça um select com um NOT IN e voilà…
Se bem que 200 mil parâmetros no filtro seria loucura…
douglaskd
valeu drs, tive uma idéia que resolve o problema.
vou setar todos os registros do BD ativos com uma “marcacao” (neste caso vou colocar uma datafim(que o usuário passar) em todos os que possuírem datafim = null ou seja ativos)
a cada iteração do XLS verifico se o registro existe no BD, se sim atualizo datafim para null (Ressuscito o Registro rs)
depois do for, faço um select para pegar todos os registros que a datafim for igual ao que o usuário havia passado.
estes seram os excluídos, pois não foram “Ressuscitados”
M
mcarabolante
não entendi a necessidade do update, não seria mais facil fazer o select, manter os registros existentes e já executar o delete ?
E
entanglement
douglaskd:
Recebo um Xls com 200.000 linhas.
preciso acessar o banco e verificar quais registros do BD não estão contidos no Xls.
fazer funcionar eu faço (com poucos registros), meu problema é desempenho.
acredito ser mais viavel, transformar esse Xls em um tipo de Collection para fazer a varredura.
alguem tem alguma sugestão, uma outra forma de pensar ?
pegar todos os registros do BD…
repetir {
pegar um registro e verificar se o código esta contido no xls…
se sim não faz nada.
se não, da um update setando datafim no registro do BD.
}
Dependendo do banco, você pode (usando o ODBC e associando o XLS como sendo uma fonte de dados ODBC) interpretar o seu arquivo XLS como se fosse uma tabela, e criar uma instrução SQL que faça o “join” dessas tabelas.
douglaskd
é um conceito de exclusão, ao invés de deletar o registro, eu preciso setar a datafim futura em que ele não será mais valido.