> 데이터 베이스 > MySQL 튜토리얼 > SqlBulkCopy가 DataTable 데이터베이스 삽입을 어떻게 최적화할 수 있나요?

SqlBulkCopy가 DataTable 데이터베이스 삽입을 어떻게 최적화할 수 있나요?

Susan Sarandon
풀어 주다: 2025-01-08 00:36:43
원래의
708명이 탐색했습니다.

How Can SqlBulkCopy Optimize DataTable Database Inserts?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿