본문 바로가기
ORACLE

[ORACLE] oracle insert 여러개하기

by 공뭉 2020. 2. 20.
반응형

일을하다가 다중행을 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 조건

 

반응형

댓글