bulk insert 예제

이 문서의 첫 번째 부분에서는 SQL Server에서 대량 삽입 작업을 사용하는 기본 사항에 대해 설명하고 실제 문제에 가까운 몇 가지 시나리오를 분석했습니다. 또한 형식 파일을 사용하여 다음 예제와 같이 넓은 기본 형식으로 저장된 데이터를 가져올 수 있습니다: SQL Server 2017 (14.x) CTP 1.1부터 BULK INSERT는 CSV 형식을 지원합니다. SQL Server 2017(14.x) CTP 1.1 이전에는 CSV(쉼표 구분값) 파일이 SQL Server 대량 가져오기 작업에서 지원되지 않습니다. 그러나 경우에 따라 CSV 파일을 SQL Server로 대량 으로 데이터를 가져오기 위한 데이터 파일로 사용할 수 있습니다. CSV 데이터 파일에서 데이터를 가져오기 위한 요구 사항에 대한 자세한 내용은 SQL Server(대량 내보내기 또는 가져오기)에 대한 데이터 준비를 참조하십시오. CR = 캐리지 리턴 및 LF = 라인 피드. 텍스트 파일에서 줄 바선을 표시하는 데 사용되며 대량 삽입 문에서 “n” 문자로 표시됩니다. FIRSTROW 매개 변수는 삽입 문의 시작점을 지정합니다. 아래 예제에서는 열 헤더를 건너뛰고 이 매개 변수를 2로 설정하려고 합니다. data_file은 SQL Server가 실행 중인 서버에서 유효한 경로를 지정해야 합니다. data_file이 원격 파일인 경우 UNC(유니버설 명명 규칙) 이름을 지정합니다. UNC 이름에는 SystemnameShareNamePathFileName 양식이 있습니다. 예를 들어 UNION ALL 함수http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/이 시나리오에서는 영업 테이블에 기본 키를 추가 하 고이 경우 중단 같음 열 매핑입니다.

이제 기본 키가 있는 Sales 테이블을 만들고 대량 삽입 명령을 통해 CSV 파일을 가져오려고 시도한 다음 오류가 발생합니다. GEOGRAPHY.txt라는 플랫 파일이 10000000 행을 포함합니다. 우리의 임무는 Sql Server 대량 삽입 문을 사용하여이 텍스트 파일에있는 모든 행을 삽입하는 것입니다. 네, 그러나 대량 내보내기는 없습니다. OPENROWSET을 사용하여 테이블에서 데이터를 내보낼 수 있지만 벌크 기능(AFAIK)은 사용하지 않을 수 있습니다. 여기에 로빈과 내가 4 년 전에 쓴 오래된 기사에서 예입니다! SQL Server Excel 워크벤치 는 WITH 절에 TABLOCK 키워드를 지정하기만 하면 됩니다. 그러나 INSERT에서 TABLOCK 옵션을 사용하려면… SELECT 문은 다음 예제와 같이 INSERT 절의 일부로 포함해야 합니다. 여러 동시 스레드를 사용하여 동일한 테이블에 대량 삽입을 시도할 때 테스트가 다른 결과를 생성하는 것처럼 보이지만 결정적이지 는 않습니다. SQL Server(및 Azure의 SQL 데이터베이스)는 대량 삽입을 지원하며 과거에 bcp를 사용했을 수 있습니다. INSERT로 수행할 수 있는 다른 작업이 하나 있습니다… 클러스터된 인덱스가 있는 테이블에 데이터를 대량 로드할 때 select 문입니다.

대량 로드 작업의 최소한의 로깅을 제어하는 추적 플래그 610을 켤 수 있습니다. 특정 상황에서는 인덱싱된 테이블에 데이터를 삽입할 때 최소한의 로깅을 수행할 수 있습니다.