SQL/MSSQL

특정 테이블을 기준으로 일괄 업데이트(데이터 동기화)

김컴맹 2013. 1. 2. 10:40
반응형


A 테이블과 B 테이블의 데이터를 동기화 시킬 때

A 테이블의 키와
B 테이블의 키가 같다고 가정하고

키를 기준으로 조인을 시키고
조인된 로우들의 데이터를 동기화 시킨다.


-- 테스트 테이블을 만들고
create table test1
(
cn varchar(100)
,data1 varchar(100)
,data2 varchar(100)
,data3 varchar(100)
,data4 varchar(100)

)

-- 테스트 데이터 삽입
insert test1 values('cn1','data1','data11','data111','data1111')
insert test1 values('cn2','data2','data22','data222','data2222')
insert test1 values('cn3','data3','data33','data333','data3333')
insert test1 values('cn4','data4','data44','data444','data4444')
insert test1 values('cn5','data5','data55','data555','data5555')
insert test1 values('cn6','data6','data66','data666','data6666')
insert test1 values('cn7','data7','data77','data777','data7777')
insert test1 values('cn8','data8','data88','data888','data8888')
insert test1 values('cn9','data9','data99','data999','data9999')

-- 같은 구조의 테이블을 복사
select * into test2 from test1

-- 테스트를 위하여 복사된 테이블의 데이터를 일부 변경 한다
update test2 set data1 ='changedata1',
data2 ='changedata2',data3 ='changedata3',data4 ='changedata4'
where cn in ('cn2','cn3','cn4','cn5')


-- select 를 이용하여 데이터가 다른 것을 확인
select * from test1
select * from test2



-- 원본 테이블과 데이터가 약간 변경된 테이블을 조인 후
-- update 절의 set 구문에서 컬럼 매핑 시킨다.
update test2 SET data1 = t1.data1, data2 = t1.data2,
data3 = t1.data3, data4 = t1.data4
from test1 t1 JOIN test2 t2
ON t1.cn = t2.cn

반응형