엑셀에 있는 데이터를 일괄로 insert 하거나 update merge 하는 경우가 종종 생긴다. .. ..
server 에서 vi 를 이용해 잘라서 입력한 후 paste 해서 스크립트를 실행시키는 방법이있으나...
vi 는 해도 해도 내 취향이 아니다. . 익숙하지가 않다.
그래서 나는 sqldeveloper의 임포트 기능을 쓴다.
table 을 하나 만든다.
적당히 칼럼
기존테스트 테이블이 있으면 그 것의 구조를 활용해서 만든다.
create table 222 as
select * from 333 where 2=1;
그리고 디비툴로 가서 테이블 목록에서 해당 테이블 우클릭 후 데이터 임포트한다.
그리고
select 로 확인
merge 나 update 할 테이블 백업
create table AAA_bak
as
select * from AAA;
merge 할 칼럼 확인
값을 추출하기 위해서 임포트한 테이블 merge할 테이블 그리고 더 필요하다면 더 필요한 테이블을 조인한다.
select 필요칼럼1,
2,
3,
4
from 임포트테이블 A, 머지테이블 B, 필요테이블 C
where A.조인키 = B.join
and B.조인 = C.조인
..
.
..
.
조건추가;
조인한 것을 테이블로 만듬
create table join_2222 as
(select 필요칼럼1,
2,
3,
4
from 임포트테이블 A, 머지테이블 B, 필요테이블 C
where A.조인키 = B.join
and B.조인 = C.조인
..
.
..
.);
실제 머지를 해본다.
merge into 머지당할테이블 i
using (select 칼럼, 칼럼, 칼럼 from join_2222 a) C
on (i.조인키 = C.조인키)
when matched
then
update set 머지당할칼럼 = C.바껴야할값;
merge 후 select 를 한 후
최종 commit 한다. . . .