SqlBulkCopy로 DataTable 데이터베이스 삽입 가속화
대규모 데이터세트를 데이터베이스에 행별로 삽입하는 작업은 매우 느립니다. 이 문서에서는 SqlBulkCopy를 사용하여 전체 DataTable을 한 번에 삽입하는 훨씬 더 효율적인 방법을 보여줍니다.
SqlBulkCopy: 성능 향상을 위한 대량 데이터 삽입
.NET System.Data.SqlClient 네임스페이스 내의 클래스인 SqlBulkCopy를 사용하면 고속 대량 데이터 삽입이 가능합니다. 데이터 전송을 최적화하고 데이터베이스 상호 작용을 최소화하여 개별 행 삽입보다 훨씬 뛰어난 성능을 발휘합니다.
구현: 실제 사례
SqlBulkCopy를 활용하려면 데이터베이스 연결과 적절하게 구성된 SqlBulkCopy 개체가 필요합니다. 다음 코드 조각은 프로세스를 보여줍니다.
<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Assumes DataTable and SQL table columns have matching names. foreach (DataColumn col in table.Columns) { bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); } bulkCopy.BulkCopyTimeout = 600; // Timeout in seconds bulkCopy.DestinationTableName = destinationTableName; bulkCopy.WriteToServer(table); }</code>
열 매핑 불일치 해결
위 예에서는 DataTable과 SQL 테이블의 열 이름이 동일하다고 가정합니다. 그렇지 않은 경우 정확한 데이터 삽입을 보장하려면 ColumnMappings
컬렉션 내에서 열 매핑을 명시적으로 정의해야 합니다.
이 방법은 대상 SQL 테이블보다 열 수가 적은 대규모 데이터 세트를 삽입할 때 특히 유용한 것으로 입증되었습니다. 일치하지 않는 열은 자동으로 NULL 값으로 기본 설정됩니다. SqlBulkCopy를 사용하면 DataTable 삽입 성능이 크게 향상되어 반복 행별 방법의 성능 병목 현상이 방지됩니다.
위 내용은 SqlBulkCopy가 DataTable 데이터베이스 삽입을 어떻게 최적화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!