일을하다가 다중행을 insert할 일이 생겼다.
(insert-select말고...)
일일히 insert하면 되지만
더 효율적인 방법이 없을까 고민하다가
쿼리를 만들어서 날렸다.
INSERT INTO table (column1, column2, ...)
VALUES (value1, value2, ...), (value1, value2, ...);
야심차게 실행했으나
미완성 쿼리문이라고 에러가났다.
이거저거 찾아보다가 2가지 방법을 알아냈다.
내가쓰기위해 정리하는 글이다.
첫번째 방법 :
INSERT ALL
INTO table(column1, column2, ...)
VALUES (value1, value2, ...)
INTO table(column1, column2, ...)
VALUES (value1, value2, ...)
...
SELECT * FROM DUAL;
—select 절 없으면 ‘누락된 셀렉트 키워드’ 라고
에러가 발생한다.
두번째 방법 :
INSERT INTO table(column1, column2, ...)
SELECT value1, value2, ... FROM DUAL
UNION ALL
SELECT value1, value2, ... FROM DUAL
UNION ALL
...
SELECT value1, value2, ... FROM DUAL;
두가지 방법중 어떤걸로해도 무난하지만
첫번째 방법은 결국
테이블을 계속 명시해서 insert하는것이고
두번째 방법은
테이블을 한번만 명시하고 insert하는것이다.
생각적으론 두번째 방법이 더 성능적으로
우수할거같은데 테스트하긴 귀찮아서
검색해보니 두번째 방법이 더 우수하다고한다.
두번째 방법을 사용하는게 더 좋을듯하다.
추가적으로, 정리를위해
insert-select 구문도 적어야겠다.
insert-select 쿼리는
어떤 테이블의 여러값들을
같은테이블이나 다른테이블에 복사하고싶을때 유용하다.
문법 :
INSERT INTO table(column1, column2, ...)
SELECT value1, value2, ...
FROM table
WHERE 조건
'ORACLE' 카테고리의 다른 글
[ORACLE] 오라클 기본키 조회 하기 (0) | 2021.06.04 |
---|---|
[ORACLE] oracle decode 와 case when (0) | 2020.08.26 |
[ORACLE] MERGE INTO 로 UPDATE INSERT 하기 (0) | 2020.03.24 |
[ORACLE] 정규표현식 REGEXP_LIKE (0) | 2019.12.03 |
댓글