Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

sqlbulkcopy, quero substituir as linhas atuais no banco de dados


At Mitch aponta as funções de cópia em massa (SqlBulkCopy , bcp e BULK INSERT ) lida apenas com inserções, não com atualizações.

A abordagem normal para o seu problema é realizar o carregamento em massa em duas (ou mais) etapas - primeiro você usa inserções em massa para carregar seus dados em uma tabela de teste e, em seguida, usa uma consulta para inserir/atualizar registros nas tabelas principais com base em os dados nas tabelas de preparo, por exemplo:
INSERT INTO MyTable
(Column1, Column2, [etc...])
SELECT Column1, Column2, [etc...] 
FROM Test_Staging
WHERE [Some condition]

Consulte SQL SERVER – Inserir dados de uma tabela para outra tabela para obter informações sobre como inserir em uma tabela a partir de outra tabela - também é possível fazer um join em um UPDATE, mas estou lutando para encontrar um bom recurso sobre isso.