본문 바로가기
IT/MYSQL

[MSSQL] BULK INSERT 사용방법/예제포함 (CSV/TXT)

by 베베야 2023. 2. 11.
728x90

MSSQL에서 대용량 데이터를 INSERT 할 때 BULK INSERT 를 사용할 수 있다.

아래의 예제를 통해서 테이블을 만들고 데이터를 삽입해 보자

 

혹시 회사에서 테스트 오류가 발생한다면 문서파일이 DRM일 걸려 있는지 확인하자.

DRM(문서보안)이 걸리면 파일을 열었을시 데이터가 깨져있어서 삽입이 불가능하다


1. 테이블 생성

create table bulk_test(
name  nvarchar(30),
age int
)

 

2. 데이터 삽입 및 확인

insert into bulk_test values('kan',20)
insert into bulk_test values('jim',21)
insert into bulk_test values('nora',22)

select * From bulk_test


 

3. 데이터 저장(CSV or TXT)

select * From bulk_test 조회한 데이터 위에서 마우스 우클릭 후 다른이름으로 저장을 선택

CSV or TXT 데이터 저장을 진행한다.

 

CSV 사용시 BULK INSERT

CSV 파일의 경우   구분자 콤마로 구분된다.

BULK INSERT bulk_test -- 대상 테이블
FROM 'D:\perflogs\bulk_data.csv' -- 파일 경로
WITH (
	FIELDTERMINATOR = ',', -- 열 구분자(콤마)
	ROWTERMINATOR ='\n', -- 행 구분자(엔터) - 기본값으로 안 적을 시 \n 자동
	FIRSTROW = 2, --로드할 첫 번째 행의 번호를 지정합니다. 기본값은 지정된 데이터 파일의 첫 번째 행입니다. FIRSTROW는 1 기반입니다
	KEEPNULLS, -- NULL 값 삽입
	TABLOCK -- 테이블 수준 잠금
)
select * From bulk_test

FIRSTROW = 2 로 지정되었기 때문에 2번째 행부터 2개의 행이 삽입 것을 있다.

 

TXT 사용시 BULK INSERT

TXT 파일의 경우   구분자 탭으로 구분된다.

(CSV와 동일하기 때문에 결과는 직접 해보시기 바랍니다.)

BULK INSERT bulk_test -- 대상 테이블
FROM 'D:\perflogs\bulk_data.txt' -- 파일 경로
WITH (
	FIELDTERMINATOR = '        ', -- 열 구분자(탭)
	ROWTERMINATOR ='\n', -- 행 구분자(엔터) - 기본값으로 안 적을 시 \n 자동
	KEEPNULLS, -- NULL 값 삽입
	TABLOCK -- 테이블 수준 잠금
)

 

 

<참조 사항>

추가적인 BULK INSERT 옵션은 아래를 참조

 

BULK INSERT(Transact-SQL) - SQL Server

BULK INSERT 문의 Transact-SQL 참조입니다.

learn.microsoft.com

 

반응형
그리드형

댓글