J'ai un jeu de données avec les enregistrements.Je insertion d'enregistrements dans la table SQL à l'aide de sqlbulkcopy.it fonctionne fine.Next Time Lorsque vous obtenez le jeu de données avec les mêmes enregistrements avec quelques valeurs modifiées SQLBulkCopy insère un autre ensemble d'enregistrements sans mettre à jour le précédent. Détails. Comment puis-je mettre à jour la table SQL à l'aide de sqlbulkcopy ?? S'il vous plaît aider. P>
merci, Vix p>
4 Réponses :
sqlbulkcopy n'est utilisé que pour insérer des enregistrements, ne pas les mettre à jour comme expliqué Ici . Vous auriez besoin d'utiliser une technique différente pour faire des mises à jour en vrac. P>
E.g. Vous pourriez sqlbulkcopy dans une table de mise en scène, puis exécutez du SQL pour mettre à jour de là à la table principale. P>
+1 Pour la table de rassemblement, c'est exactement la manière dont vous devez faire des mises à jour avec insert en vrac et pour des quantités massives de mises à jour sur les mêmes tables, il vaut bien l'effort de le faire.
Tronquez la table et effectuez BulkCopy. P>
Pour VIX: tronquez, la charge en vrac est le processus le plus efficace si vous voulez seulement que la table résultante ne contienne que les enregistrements de charge en vrac. - upvoté
Forte pour certaines situations simples, mais ce serait une véritable douleur si un niveau de complexité dans les données que vous mettez à jour. Le maintien de votre intégrité de données pourrait être très difficile en fonction des particularités de l'application / dB. par exemple. Les relations FK doivent être conservées.
Évitez la table tronquée et créez une nouvelle table temporaire, laquelle BTW consommez plus d'espace et de mémoire. P>
J'ai créé un déclencheur avec au lieu d'insérer et d'utiliser une déclaration de fusion à l'intérieur. P>
mais n'oubliez pas d'ajouter le paramètre sqlbulkcopyoption.firtriggers dans la SQLBulkCopy. P>
Ceci est mes deux cents. P>
Comme mentionné par adathedidev, SQLBulkCopy ne peut que l'insertion, mais une bibliothèque alternative permettant d'effectuer des opérations upersert.
Disclaimer strong>: Je suis le propriétaire du projet Opérations en vrac p> La bibliothèque d'opérations en vrac a une méthode" Bulkmerge fort> "Quel insert ou Mettre à jour les lignes basées sur la clé spécifiée. P> var bulk = new BulkOperation(connection);
bulk.ColumnMappings.Add("ID", true);
bulk.ColumnMappings.Add("Column1");
bulk.ColumnMappings.Add("Column2");
bulk.ColumnMappings.Add("Column3");
bulk.BulkMerge(dt);