Eu tenho duas tabelas com a mesma estrutura que preciso copiar todas as tabelas da tabela A para a tabela B, o problema é que alguns registros da tabela A já existem na tabela B, portanto, a importação falhou.
Então fiz uma consulta para fazer o import (Também usando a ferramenta build in Import) assim
SELECT * from TransactionEntryN
WHERE TransactionEntryN.TransactionEntryID
NOT IN (select TransactionEntryID FROM TransactionEntry)
O problema é que esta operação demora 13 min. para copiar apenas 50 mil registros e eu tenho 16 milhões de registros lá, levaria uma semana para terminar isso...
Existe alguma maneira mais rápida de fazer isso?
btw a chave primária TransactionEntryID é um identificador único que pode atrasá-lo? (Não posso mudar, só estou me perguntando se esse é o problema.
Se você deseja que a segunda tabela contenha os mesmos dados da primeira tabela, por que não simplesmente apagar a tabela e substituí-la?
Remova todas as linhas que estão na tabela B e não na tabela A. Então você pode usar DOTNET SQLBulkCopy para copiar dados da tabela A para a tabela B. É bem rápido. Para 100.000 registros, levaria menos de 10 segundos. Estou escrevendo um pseudocódigo aqui. Se você quiser um exemplo de trabalho completo, você pode ir para http://technico.qnownow.com/2012/03/27/using-sql-bulk-copy-to-functionally-load-data-from-source-db-to -destination-db/