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 옵션은 아래를 참조
반응형
그리드형
'IT > MYSQL' 카테고리의 다른 글
[MSSQL] sys.dm_os_sys_info(시스템 리소스 확인) / 재부팅 후 일정시간 느려지는 이유(메모리 확인) (0) | 2023.08.13 |
---|---|
성능모니터(Perfmon) 컴퓨터에 연결할 수 없습니다 원격오류 (0) | 2022.07.16 |
[MYSQL] UPDATE SET - 데이터 수정문 (0) | 2022.01.13 |
[MySQL] Error Code: 1175 You are using safe update mode... 해결방법 (0) | 2022.01.13 |
[MySQL] insert into - 데이터 입력문 (0) | 2022.01.13 |
댓글