사이트를 만들면서
Insert 를 대량으로 한번에 처리하는 경우가 종종 발생한다.
이럴 때 단순히 Insert 를 여러번 시도하면 Web 서버와 DB 서버간에 Connection 이 여러번 발생하여
둘중 한 서버가 죽는 일이 종종 발생한다.
이럴때
한번에 대량으로 Insert 하는 방법이 있다.
물론 동일한 테이블에 한해서....
INSERT INTO dbtable(
columna,
columnb,
columnc,
columnd
)VALUES
('valuea1', 'valueb1', 'valuec1', 'valued1'),
('valuea2', 'valueb2', 'valuec2', 'valued2'),
('valuea3', 'valueb3', 'valuec3', 'valued3'),
('valuea4', 'valueb4', 'valuec4', 'valued4')
위와 같이 테이블의 컬럼을 지정하고 values 부분에 여러 건의 데이터를 넣어서 실행하면
한번에 Insert 가 진행된다.
혹 mybatis 에서 사용을 하게 된다면
<insert id="insert" parameterType="java.util.List">
INSERT INTO dbtable(
columna,
columnb,
columnc,
columnd
)VALUES
<foreach collection="list" item="item" separator=" , ">
(
#{item.valuea},
#{item.valueb},
#{item.valuec},
#{item.valued}
)
</foreach>
</insert>
foreach 구문을 사용하여 values 를 중복 처리해 주면 된다.
참고로 대량으로 Insert 를 진행할때는 앞서 설명한 Merge 를 같이 진행할 수 없다.
Duplicate key 는 한 건씩 Insert 할 때만 사용이 가능하다.
'일하딩 > Mysql' 카테고리의 다른 글
[Mysql] 문자열 찾기, 원하는 순서 정렬 - FIND_IN_SET (0) | 2021.02.08 |
---|---|
[Mysql] 문자열 찾기, 원하는 순서로 정렬 - FIELD 함수 (0) | 2021.02.05 |
[Mysql] Select 시 Paging 처리 하기. Limit, Offset (0) | 2020.11.11 |
[Mysql] Merge 하는 방법 (0) | 2020.07.11 |
댓글