Comment obtenir les valeurs d'identité dans SQL BULK COPY?

c# sqlbulkcopy sql-server

Question

Je dois obtenir les valeurs IDENTITY d'une table après SQLBULKCOPY vers la même table. Le volume de données pourrait être des milliers d'enregistrements.

Quelqu'un peut-il m'aider à ce sujet?

Réponse d'expert

Disclaimer : Je suis le propriétaire du projet Bulk Operations

En bref, ce projet surmonte les limites de SqlBulkCopy en ajoutant des fonctionnalités MUST-HAVE telles que la sortie de la valeur d'identité insérée.

Sous le capot, il utilise SqlBulkCopy et une méthode similaire à celle de @Mr Moose answer.

var bulk = new BulkOperation(connection)

// Output Identity Value
bulk.ColumnMappings.Add("CustomerID", ColumnMappingDirectionType.Output);

// Map Column
bulk.ColumnMappings.Add("Code");
bulk.ColumnMappings.Add("Name");
bulk.ColumnMappings.Add("Email");

bulk.BulkInsert(dt);

Réponse populaire

Essaye ça

CREATE TABLE #temp 
(
    DataRow varchar(max)
)
BULK INSERT #Temp FROM 'C:\tt.txt'  

ALTER TABLE #temp
ADD id INT IDENTITY(1,1) NOT NULL

SELECT * FROM #temp


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi