2007~2011/SQL Server2009. 12. 17. 00:01

SQL Server 에서 두 테이블의 데이터 차이점을 비교해 볼 수 있을까요?
네, TableDiff 유틸리티를 사용하여 차이점을 비교해 볼 수 있습니다. TableDiff 도구를 사용하는 방법에 대해서 아래와 같이 예제를 만들어 봤습니다. 

-- A, B 2개의 테이블을 생성하여 데이터를 입력합니다.

USE LAIGO
GO

CREATE TABLE A

 MEMBER_ID           int IDENTITY(1,1) NOT NULL,
 MEMBER_NAME     nvarchar(10) NOT NULL,
 MEMBER_POINT     int NOT NULL -- 포인트
)

INSERT INTO A VALUES ('라이고',30000)
INSERT INTO A VALUES ('정지훈',10000)
INSERT INTO A VALUES ('박지성',5000)
INSERT INTO A VALUES ('장동건',2000)
INSERT INTO A VALUES ('이병헌',9000)
INSERT INTO A VALUES ('김태희',4000)
INSERT INTO A VALUES ('고현정',8000)



CREATE TABLE B

 MEMBER_ID          int IDENTITY(1,1) NOT NULL,
 MEMBER_NAME    nvarchar(10) NOT NULL,
 MEMBER_POINT    int NOT NULL
)

-- 2건의 데이터를 A 테이블과 다르게 입력하였습니다.
INSERT INTO B VALUES ('라이고',3000) -- 30000
INSERT INTO B VALUES ('정지훈',10000)
INSERT INTO B VALUES ('박지성',5000)
INSERT INTO B VALUES ('장동건',20000)-- 2000
INSERT INTO B VALUES ('이병헌',9000)
INSERT INTO B VALUES ('김태희',4000)
INSERT INTO B VALUES ('고현정',8000)



[TableDiff 사용방법]

A, B 테이블의 차이점을 d:\temp\diff.sql 파일로 Export 하는 명령 구문

C:\Program Files\Microsoft SQL Server\90\COM>TableDiff -sourceserver laigo-pc -sourcedatabase laigo -sourcetable A -sourceuser sa -sourcepassword Pa$$w0rd  -destinationserver . -destinationdatabase laigo -destinationtable B -destinationuser sa -destinationpassword Pa$$w0rd -f d:\temp\diff.sql



[TableDiff 결과]

diff.sql 파일을 열어보면 아래와 같이 쿼리가 생성되어 있습니다.

SET IDENTITY_INSERT [dbo].[b] ON
    UPDATE [dbo].[b] SET [MEMBER_POINT]=30000 WHERE [MEMBER_ID] = 1
    UPDATE [dbo].[b] SET [MEMBER_POINT]=2000 WHERE [MEMBER_ID] = 4
SET IDENTITY_INSERT [dbo].[b] OFF



[참고자료]
tablediff Utility
http://msdn.microsoft.com/en-us/library/ms162843.aspx


작성자 : Lai Go / 작성일자 : 2009.12.15

Posted by Lai Go