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)
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
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