bcp 및 BULK INSERT 사용
bcp 명령 프롬프트 유틸리티는 Microsoft® SQL Server™ 데이터를 데이터 파일로 또는 파일에서 복사합니다. 이 유틸리티는 주로 데이터베이스 관리 시스템(DBMS)과 같은 다른 프로그램으로부터 많은 데이터를 SQL Server 테이블로 전송하는 데 사용됩니다. 먼저 원본 프로그램에서 전송할 데이터를 데이터 파일로 내보낸 다음 bcp를 사용하여 데이터 파일에서 SQL Server 테이블로 가져옵니다. 또는 다른 프로그램에서 사용할 수 있도록 bcp를 사용하여 SQL Server 테이블의 데이터를 데이터 파일로 전송할 수도 있습니다. 예를 들어, 데이터를 SQL Server 인스턴스에서 데이터 파일로 복사할 수 있습니다. 다른 프로그램이 그 데이터 파일에서 데이터를 가져올 수 있습니다.
참고 bcp 유틸리티는 ODBC 대량 복사 응용 프로그램 프로그래밍 인터페이스(API)를 사용하여 작성됩니다. 이전 버전의 bcp 유틸리티는 DB-Library 대량 복사 API를 사용하여 작성되었습니다.
BULK INSERT 문을 사용하여 데이터 파일에 있는 데이터를 SQL Server 테이블로 전송할 수도 있습니다. 그러나 BULK INSERT 문은 SQL Server 인스턴스로부터 데이터 파일로 데이터를 대량 복사할 수 없습니다. BULK INSERT 문을 사용하면 명령 프롬프트 대신 Transact-SQL 문과 bcp 유틸리티의 기능을 사용하여 SQL Server 인스턴스로 데이터를 대량 복사할 수 있습니다.
대량 복사 API를 사용하여 SQL Server 데이터를 데이터 파일로 또는 데이터 파일에서 대량 복사하도록 프로그램을 작성할 수도 있습니다. 대량 복사 API는 ODBC, OLE DB, SQL-DMO 및 DB-Library 기반의 응용 프로그램에서 사용할 수 있습니다.
트리거 실행
모든 대량 복사 작업(BULK INSERT 문, bcp 유틸리티 및 대량 복사 API)은 대량 복사 참고인 FIRE_TRIGGERS를 지원합니다. 테이블로 행을 복사하는 대량 복사 작업에서 FIRE_TRIGGERS를 지정하면 대량 복사 작업에 의해 삽입된 모든 행에 대해 INSERT 및 대상 테이블에 정의한 INSTEAD OF 트리거가 대신 사용됩니다. 기본적으로 대량 복사 작업은 트리거를 실행하지 않습니다.
이러한 고려 사항은 FIRE_TRIGGERS를 지정하는 대량 복사 작업에 적용됩니다.
• 보통 최소로 기록되는 대량 복사 작업은 모두 기록됩니다.
• 트리거는 대량 복사 작업 중 일괄 처리가 실행될 때마다 실행됩니다. 트리거로 전달된 inserted 테이블에는 일괄 처리에 의해 삽입된 모든 행이 포함됩니다. FIRE_TRIGGERS는 INSERT 및 INSTEAD OF 트리거가 여러 행 삽입을 지원하는 테이블로 대량 복사할 때만 지정합니다.
• INSERT 트리거에 의해 생성된 결과 집합은 대량 복사 작업을 수행하는 클라이언트로 반환되지 않습니다.
출처 : SQL Server 온라인 설명서