レコードを含むデータテーブルがあります.SqlBulkCopyを使用してSqlテーブルにレコードを挿入しています.正常に動作します.次回、値がほとんど変更されていない同じレコードでデータテーブルを取得すると、SqlBulkCopyは以前の詳細を更新せずに別のレコードセットを挿入しています.方法SqlBulkCopy を使用して Sql テーブルを更新できますか?? 助けてください。
ありがとう、ヴィックス
レコードを含むデータテーブルがあります.SqlBulkCopyを使用してSqlテーブルにレコードを挿入しています.正常に動作します.次回、値がほとんど変更されていない同じレコードでデータテーブルを取得すると、SqlBulkCopyは以前の詳細を更新せずに別のレコードセットを挿入しています.方法SqlBulkCopy を使用して Sql テーブルを更新できますか?? 助けてください。
ありがとう、ヴィックス
SqlBulkCopy はレコードの挿入にのみ使用され、ここで説明されているようにレコードの更新には使用されません。一括更新を行うには、別の手法を使用する必要があります。
たとえば、ステージング テーブルに SqlBulkCopy を実行し、SQL を実行してそこからメイン テーブルに更新することができます。
テーブルを切り捨てて一括コピーを実行します。
AdaTheDev が述べたように、SqlBulkCopy は挿入しかできませんが、Upsert 操作を実行できる代替ライブラリがあります。
免責事項: 私はプロジェクトBulk Operationsの所有者です
Bulk Operations ライブラリには、指定されたキーに基づいて行を挿入または更新する「 BulkMerge 」メソッドがあります。
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);