ID 관계가있는 두 개의 데이터 테이블을 대량 삽입하려면 어떻게해야합니까?

c# datatable sqlbulkcopy sql-server

문제

난 의사 코드에서 SQLBulkCopy를 사용하고 있습니다.

  • 새로운 Employee 데이터 테이블 만들기
  • 새 EmployeeAddress 데이터 테이블 만들기
  • 직원 테이블을 채우지 만 정체성이있는 employeeId는 지정하지 마십시오.
  • EmployeeAddress 데이터 테이블을 채우지 만 employeeId 필드를 포함합니다.
  • 이 작업을 두 번하고 테이블 이름을 변경하여 두 데이터 테이블을 모두 데이터베이스에 작성하십시오.

.

using (var bulk = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity & SqlBulkCopyOptions.KeepNulls))
    {
        bulk.BatchSize = 25;
        bulk.DestinationTableName = "Employee";
        bulk.WriteToServer(employeeDataTable);
    }       

처음으로 삽입 된 직원에게 올바르게 정렬되도록 2 차 데 이터 블에서 employeeId를 어떻게 지정합니까? 내가 데이터를 읽는 방법은 직원과 주소를 함께 읽는 것입니다. 따라서 모든 직원을 다시 삽입하고 모든 주소를 삽입하는 것은 약간의 고통입니다.

우아한 해결책이 있었는지 궁금 해서요?

수락 된 답변

나는 이것이 얼마나 우아한 지 확신하지 못한다. 나는 당신이 결정할 수있는 일이라고 생각한다. 직원 데이터에서 고유 한 필드 나 필드의 조합이 있다고 가정합니다.

서버에 스테이징 테이블을 작성하는 경우, 모든 직원 데이터와 직원 주소 정보가 들어있는 데이터를 대량 삽입 할 수 있습니다.

스테이징 테이블에서 직원 데이터를 삽입하십시오. 그런 다음 스테이징 테이블에서 직원 테이블을 조인 (새로 할당 된 ID를 얻으려면)하고 직원 주소 데이터를 삽입하십시오.

마지막으로 스테이징 테이블을 제거하십시오.

모든 것은 여전히 ​​지향적이어서, 당신은 좋은 성과를 가져야합니다.



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