반응형

대량 삽입 작업

 

대량 삽입 작업 SQL ServerBULK INSERT 문이나 bcp.exe 유틸리티와 같이 텍스트 형식의 데이터 파일(=플랫 파일) SQL Server로 입력하는 작업 개체 입니다. 텍스트 파일을 SQL Server로 입력한다는 점에서는 데이터 흐름 작업에 포함될 수 있는 부분이지만, 이 작업은 제어 흐름 영역에서 수행이 되며, 별도의 데이터 흐름에서 수행되는 것은 아닙니다. 데이터 흐름을 사용하지 않기 때문에 단순히 원본인 텍스트 파일에서 대상인 SQL Server로 입력하는 작업만 가능하며, 가공이나 집계, 정렬 등과 같은 변환 기능은 구현할 수 없습니다. 하지만, 데이터 처리 준비 작업 등과 같이 단순히 텍스트 형태의 데이터 파일을 SQL Server에 입력하는 작업인 경우, 대량 삽입 작업을 이용하는 것이 단순하며 성능에서도 다른 방식에 비해 우수할 수 있습니다.

 

 

대량 삽입 작업 편집기 내에 있는 연결 탭과 옵션 탭에서 대량 삽입 작업에 대한 속성을 설정합니다.

 

연결

 

 

연결 탭에서는 원본 및 대상, 원본의 서식을 설정합니다.

Ÿ           대상 연결
Connection –
원본 텍스트 파일로부터 읽어 들인 데이터를 입력할 대상 테이블을 지정합니다. 연결 관리자OLE DB 연결을 사용합니다.
DestinationTable –
대상 테이블을 지정합니다.

 

Ÿ           서식

Format – 대량 삽입 작업을 위한 서식의 형태를 선택합니다.

ú           파일 사용 서식이 지정된 파일을 사용합니다. BULK INSERT 문에서 WITH (FORMATFILE = …) 옵션과 동일합니다.

ú           지정 직접 RowDelimeter ColumnDelimerer의 속성을 지정합니다.

RowDelimeter – 행 구분자를 설정합니다.

ColumnDelimeter – 열 구분자를 설정합니다.

 

Ÿ           원본 연결
File –
연결 관리자파일 연결을 사용하여 원본으로 사용될 텍스트 파일을 지정합니다.

 

 

 

옵션

 

 

옵션 탭에서는 CodePage FileType 등과 같이 대량 삽입 작업에 대한 고급 설정을 할 수 있습니다. 대부분의 경우, 기본값으로 직업이 수행할 수 있습니다. 하지만, MaxErrors 등과 같이 대량 삽입 작업 시 허용할 에러 수 등을 지정할 때 이용할 수 있습니다.

 

Ÿ           고급 옵션

CodePage

ú           ACP - char, varchar 또는 text 데이터 형식의 열은 ANSI/Microsoft Windows 코드 페이지(ISO 1252)에서 SQL Server 코드 페이지로 변환됩니다.

ú           OEM - char, varchar 또는 text 데이터 형식의 열은 시스템 OEM 코드 페이지에서 SQL Server 코드 페이지로 변환됩니다.

ú           RAW – 다른 코드 페이지로의 변환이 이루어지지 않는 가장 빠른 옵션입니다.

ú           기타 코드 페이지 특정 코드( : 949)로 변환됩니다.

 

DataFileType

ú           char – 일반 문자 형식

ú           native - 네이티브(데이터베이스) 데이터 형식. bcp 유틸리티로 SQL Server 에서 데이터를 대량 로드하여 네이티브 데이터 파일을 만들 수 있습니다. 네이티브 형식은 char 형식보다 더욱 성능이 뛰어납니다.

ú           widechar – 유니코드 문자

ú           widenative - 데이터가 유니코드로 저장되는 네이티브(데이터베이스) 데이터 형식. char, varchar text 열은 제외됩니다. bcp 유틸리티로 SQL Server 에서 데이터를 대량 로드하여 widenative 데이터 파일을 만듭니다. widenative 값은 widechar 값을 대체하여 보다 뛰어난 성능을 제공합니다. 데이터 파일에 ANSI 확장 문자가 포함되어 있으면 'widenative'를 지정하십시오.

 

BatchSize - 일괄 처리의 행 수를 지정합니다. BatchSize 0으로 설정하면 데이터가 단일 일괄 처리로 로드됩니다.

 

LastRow - 삽입할 마지막 행의 번호를 지정합니다. 기본값은 0이며 이는 지정한 데이터 파일의 마지막 행을 가리킵니다.

 

FirstRow - 삽입할 첫 번째 행의 번호를 지정합니다. 기본값은 1이며 이는 지정한 데이터 파일의 첫 번째 행입니다.

 

 

Ÿ           옵션

Options

ú           CHECK 제약 조건 대량 삽입 작업 중에 대상 테이블 또는 뷰의 모든 제약 조건을 확인하도록 지정합니다.
CHECK
제약 조건 옵션을 지정하지 않으면 모든 CHECK 제약 조건이 무시됩니다. UNIQUE, PRIMARY KEY, FOREIGN KEY 또는 NOT NULL 제약 조건은 항상 적용됩니다.

ú           Null 유지 삽입된 열에 기본값이 지정되지 않도록 하며, 빈 열인 경우 Null 값을 유지하도록 지정합니다.

ú           ID 삽입 가능 – Identity 열에 데이터를 입력할 경우, 가져온 데이터 파일의 ID값이 ID열에 사용되도록 지정합니다. ID 삽입 가능을 체크하지 않는 경우, 이 열의 ID값은 확인하지만, 가져오지는 않습니다.

ú           테이블 잠금 대량 삽입 작업이 진행되는 동안 테이블 수준 잠금을 보유하도록 지정합니다. 테이블에 인덱스가 없고 TABLOCK이 지정되어 있으면 여러 클라이언트가 동시에 테이블을 로드할 수 있습니다. 기본적으로 잠금 동작은 table lock on bulk load 테이블 옵션에 의해 결정됩니다. 대량 로드 작업이 진행되는 동안에만 잠금을 보유하면 테이블에 대한 잠금 경합이 줄어들고 성능이 크게 향상됩니다.

ú           트리거 실행 대량 삽입 작업 중에 대상 테이블에서 정의된 삽입 트리거가 실행되도록 지정합니다. 트리거가 대상 테이블의 INSERT 작업에 대해 정의되면 완료된 모든 일괄 처리에 대해 발생합니다.

 

SortedData - 데이터 파일의 데이터 정렬 방법을 지정합니다. 로드된 데이터가 테이블의 클러스터형 인덱스에 따라 정렬되면 대량 삽입 작업의 성능이 향상됩니다. 데이터 파일을 다른 순서로 정렬하거나 테이블에 클러스터형 인덱스가 없으면 ORDER 절이 무시됩니다. SortedData 속성에서 지정된 열 이름은 대상 테이블의 열이어야 합니다. 예를 들어 테이블에 Seq라는 열에 대해 클러스터형 인덱스가 설정되어 있고, 데이터 파일이 Seq 순서대로 정렬되어 있는 경우, SortedData의 속성 값을 Seq로 지정해 주면 성능이 향상될 수 있습니다.

 

MaxErrors - 대량 삽입 작업을 취소하기 전까지 데이터에서 허용되는 최대 구문 오류 수를 지정합니다. 대량 삽입 작업으로 가져올 수 없는 각 행은 무시되고 하나의 오류로 계산됩니다. max_errors를 지정하지 않으면 기본값은 0입니다.

 

 

반응형

+ Recent posts