전체 DataTable을 데이터베이스 테이블 C #에 삽입 / 업데이트합니다.

c# sqlbulkcopy sql-server

문제

나는 여기서 해결할 수있는 문제에 직면하고있다. DataSet 에 3 개의 다른 테이블이 있는데이를 데이터베이스 테이블에 삽입하려고합니다.

나는 SqlBulkCopy 사용하여이 작업을 수행 할 수 있지만 catch가 있으며 데이터가 이미 데이터베이스에 있는지 확인한 다음 삽입 대신 업데이트를 원합니다.

그리고 데이터가 데이터베이스 테이블에 존재하지 않으면, 그것을 삽입하고 싶습니다. 이것에 대한 도움을 주시면 감사하겠습니다.

나는 각 레코드를 통해 그것을 반복 할 수 있고 그것이 존재하는지 검사 할 프로 시저를 호출 할 수 있다는 것을 안다. 그러나 데이터 크기가 크고 각 레코드를 반복하는 데 시간이 걸릴 것이므로이 방법을 사용하고 싶지는 않습니다.

문안 인사

전문가 답변

면책 조항 : 저는 Bulk Operations 프로젝트의 소유자입니다.

이 프로젝트는 BulkInsert, BulkUpdate, BulkDelete 및 BulkMerge (Upsert)를 허용합니다.

내부적으로는 @marc_s가 제안한 것 (SqlBulkCopy를 임시 테이블에 사용하고 기본 키에 따라 삽입 또는 업데이트 할 수있는 병합 문을 수행)을 수행합니다.

var bulk = new BulkOperation(connection);
bulk.BulkMerge(dt);


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.