본문 바로가기
DataBase/MS-SQL

[MS-SQL] 다중 레코드 INSERT 하기

by 너울림 2022. 12. 24.

다중 레코드 INSERT 하기

 

다중 레코드 INSERT 하기

 


포스팅 개요


저는 주로 레코드를 추가할 때 다음 3가지 방식을 가장 많이 사용합니다.

  • 단일 레코드 추가 방식
    예) INSERT INTO Table_name (컬럼1, 컬럼2, ...)
          VALUES (Val1,Val2,...)
  • 다중 레코드 추가 방식
    예) INSERT INTO Table_name (컬럼1, 컬럼2, ...)
          VALUES (Val1,Val2,...),(Val3,Val4,...),(Val5,Val6,...)
  • 파일에서 데이터를 가져와 추가하는 방식
    예) BULK INSERT dbo.Table_name
          FROM 'C:\Downloads\Data_File.csv'
          WITH (옵션)

오늘 포스팅에서는 위 방식 중 다중 레코드 방식에 대해서 알아보겠습니다. 구조는 단일 레코드 방식과 동일하지만 마지막에 등록 내용을 쉼표(,)로 이어 여러 건의 레코드를 일괄로 추가하는 방식입니다. 기본적으로는 단일 방식을 여러 번 하는 것보다 좋은 성능을 보여주는 쿼리문입니다.


예제 쿼리


TEST용 테이블은 임시 테이블로도 대체 가능합니다.

-- TEST 테이블을 중복되는 걸 막기 위한 테이블 유무 검사
IF OBJECT_ID ('[dbo].[DataInsert_Test]') IS NOT NULL DROP TABLE [dbo].[DataInsert_Test]

-- TEST 테이블 생성
CREATE TABLE DataInsert_Test(
 [DIT_KeyNumber] [INT] IDENTITY (1, 1) NOT NULL, --Key = 증가
 [DIT_KeyDate] [DATETIME] NOT NULL DEFAULT GETDATE(),
 [DIT010] [VARCHAR](50) NULL,
 [DIT020] [VARCHAR](50) NULL,
 [DIT030] [VARCHAR](50) NULL,
 [DIT040] [VARCHAR](50) NULL,
 [DIT050] [VARCHAR](50) NULL
 PRIMARY KEY ([DIT_KeyNumber],[DIT_KeyDate])
)

-- TEST 테이블에 INSERT
INSERT INTO DataInsert_Test(DIT010, DIT020, DIT030, DIT040, DIT050) VALUES 
('블로그', '글쓰기', '재밌다', 'Ullim.Net', '글쓴이 : 너울림'),
('블로그', '글쓰기', '재밌다', 'Ullim.Net', '글쓴이 : 너울림'),
('블로그', '글쓰기', '재밌다', 'Ullim.Net', '글쓴이 : 너울림')

-- TEST 조회
SELECT * FROM DataInsert_Test

실행 결과


일괄로 입력되기 때문에 데이터 등록 시간은 동일하게 표시됩니다.

다중 insert 테스트
다중 레코드 INSERT 하기

댓글