c# sqlbulkcopy 예제

위의 예제에서는 두 테이블에 동일한 스키마가 있었습니다. 경우에 따라 스키마가 다른 테이블 간에 데이터를 전송해야 합니다. 제품_아카이브 테이블에서 제품_TopSelling 테이블로 모든 제품 이름과 수량을 전송한다고 가정합니다. 두 테이블의 스키마는 열 이름이 다르기 때문에 다릅니다. 이는 데이터베이스 디자인 섹션 아래의 위의 이미지에도 표시됩니다. Microsoft SQL Server에는 단일 서버에서 서버 간에 데이터를 한 테이블에서 다른 테이블로 이동하기 위한 인기 있는 명령 프롬프트 유틸리티인 bcp가 포함되어 있습니다. SqlBulkCopy 클래스를 사용하면 유사한 기능을 제공하는 관리되는 코드 솔루션을 작성할 수 있습니다. SQL Server 테이블(예: INSERT 문)에 데이터를 로드하는 다른 방법이 있지만 SqlBulkCopy는 이에 비해 성능이 크게 향상됩니다. 이 예제에서는 데이터 테이블이 런타임에 만들어지고 세 개의 행이 추가됩니다.

WriteToServer 메서드가 실행되기 전에 행 중 하나가 편집됩니다. WriteToServer 메서드는 DataRowState.변경되지 않은 rowState 인수를 사용하여 호출되므로 변경되지 않은 두 행만 대상에 대량 복사됩니다. 이 예제에서는 XML 파일 data.xml이 있습니다. 이 파일에는 학생 기록이 있습니다. Data.xml 개발 에서 때로는 많은 양의 데이터를 원본에서 SQL Server 데이터베이스 테이블로 전송해야 합니다. 우리는 sqlbulkcopy를 사용하여 물건의이 종류를 할 수 있습니다. 대량 은 많은 것을 의미합니다. 따라서 SqlBulkCopy를 사용하면 모든 원본에서 SQL Server 데이터베이스로 많은 양의 데이터를 보낼 수 있습니다. 예를 들어 XML 형식으로 데이터 컬렉션을 가지고 있고 이 데이터를 데이터베이스 테이블에 저장하려고 합니다. 당신은 매우 쉽게이 작업을 수행 할 수 있습니다. 오늘이 문서에서 우리는 C #에서 SqlBulkCopy를 사용하는 방법을 배우게됩니다. SqlBulkCopy 클래스는 System.Data.SqlClient 네임스페이스의 일부입니다.

이 클래스에서는 항상 2 개의 부품, 소스 및 대상을 가지고 있습니다. 소스는 XML, 액세스, Excel 또는 SQL일 수 있습니다(즉, 모든 유형의 데이터 원본). 이 데이터는 데이터의 대상 부분이 테이블에 매우 빠르게 삽입된 후 데이터 테이블 또는 데이터 판독기에 로드될 수 있습니다. 작동 방식다음 예제 살펴보기: 다음 콘솔 응용 프로그램은 SqlBulkCopy 클래스를 사용하여 데이터를 로드하는 방법을 보여 줍니다. 이 예제에서는 SqlDataReader를 사용하여 SQL Server AdventureWorks 데이터베이스의 Production.Product 테이블의 데이터를 동일한 데이터베이스의 유사한 테이블에 복사합니다. 이 예제에서는 데이터 테이블이 런타임에 만들어집니다. 대상 테이블에 복사할 DataTable에서 단일 행이 선택됩니다. 첫 번째 단계에서는 원본 데이터를 가져옵니다.

소스는 액세스, 엑셀, SQL.과 같은 다양한 데이터 플랫폼일 수 있습니다.