다중 레코드 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
실행 결과
일괄로 입력되기 때문에 데이터 등록 시간은 동일하게 표시됩니다.
'DataBase > MS-SQL' 카테고리의 다른 글
[MS-SQL] 특정 컬럼에서 소수점이 존재하는 레코드 조회하기 (0) | 2023.01.05 |
---|---|
[MS-SQL] Create Table 생략하고 임시 테이블 생성 (Select Into) (0) | 2023.01.04 |
[MS-SQL] 그룹별 ROW(행) 문자열 결과 합치기 (STUFF, FOR XML PATH 활용) (0) | 2023.01.03 |
[MS-SQL] 중복 테이블 삭제 후에 다시 테이블 생성(CREATE)하기 (0) | 2023.01.02 |
[MS-SQL] DB 로그삭제(파일축소) - Version 4 일괄적용 (0) | 2022.12.23 |
[MS-SQL] DB 로그삭제(파일축소) - Version 3 단일적용(간단2) (0) | 2022.12.22 |
[MS-SQL] 물리적인 테이블 크기 확인하기 (0) | 2022.12.18 |
[MS-SQL] 특정 컬럼(Column)의 정보를 이용하여 테이블 검색 (0) | 2022.12.14 |
댓글