SqlBulkCopy 및 ColumnMappings과 관련된 게시 된 질문을 검색하여 해결 방법을 찾을 수 없습니다. SQL Server 2008 R2와 함께 C# ASP .NET MS VS 2010을 사용하고 있습니다.SqlBulkCopy 열 매핑 500 열과 새 열
저는 SqlBulkCopy를 사용하여 DataTable Source의 데이터가있는 준비 테이블을로드했습니다. 내 SqlBulkCopy 개체에 ColumnMappings 속성을 추가하고 싶습니다. 그러나 많은 열을 가지고 있기 때문에 DB 준비 테이블의 열에 매핑해야하는 코드에 500 개 이상의 열을 모두 나열하지 않으려합니다.
ColumnMappings을 사용해야하는 이유는 스키마를 동적으로 디자인하면 좋지만 스키마를 동적으로 변경해야한다는 것입니다.하지만이 경우에는 내부 클라이언트가 확인하고 위험을 이해합니다.
또한 모든 열 이름을 컬렉션으로 캡처했습니다. ColumnMappings 메서드는 컬렉션을 소스 및 대상으로 사용한다고 생각하지 않습니다.
이 문제를 처리하기 위해 두 개의 SqlBulkCopy 개체를 쓰려고 생각했지만 작동하지 않을지는 생각했습니다. 또 다른 옵션은 T-SQL을 사용하는 것입니다.
내가 처리 할 수있는 가장 좋은 방법은 무엇입니까?
--set the connection string
//
string strConn = ConfigurationManager.ConnectionStrings["CPDM"].ToString();
//
SqlConnection scCPDM = new SqlConnection(strConn);
//
//
--create the SqlBulkCopy opbject
//
SqlBulkCopy bulkcopy = new SqlBulkCopy(strConn);
bulkcopy.BulkCopyTimeout = 3000;
bulkcopy.DestinationTableName = "CPDE_STAGING";
//
--need a to map all column mappings + new columns
--looking to do something like this --> bulkcopy.ColumnMappings.Add(*,*);
--then this ----> bulkcopy.ColumnMappings.Add(new_column,new_table_column);
--for each new column
bulkcopy.WriteToServer(dtNewRaw);