IT 성장일기

[SQL Server] SQL Server 서로 다른 데이터베이스의 테이블 구조 비교하기 본문

Database/SQL Server

[SQL Server] SQL Server 서로 다른 데이터베이스의 테이블 구조 비교하기

고 양 2023. 9. 8. 09:49
반응형
SQL Server 서로 다른 데이터베이스의 테이블 구조 비교

DB를 마이그레이션 할 때 데이터를 옮겨 담기에 앞서 서로 다른 DB의 테이블 구조나 데이터 타입을 비교하여 일치시켜야 할 필요가 있습니다.

조건은 아래와 같습니다.

  • DB_A와 DB_B가 존재함
  • 각각 동일한 테이블이 존재함 (DB_A.dbo.TBL, DB_B.dbo.TBL)
  • 각 테이블 id를 알고 있음

DB_A와 DB_B의 같은 테이블의 컬럼 구조를 비교하기

SELECT 
	* 
FROM 
	DB_A.dbo.syscolumns 
WHERE 
	id='10101010' 
EXCEPT 
SELECT 
	* 
FROM 
	DB_B.dbo.syscolumns 
WHERE
	id='01010101'

 

테이블, 컬럼, 데이터 타입과 데이터 길이제한 조회하기

SELECT 
	A.table_name AS TABLENAME,
	A.column_name AS A_COLUMNNAME,
	A.column_default,
	A.data_type AS A_DATATYPE,
	A.character_maximum_length AS A_MAXLENGTH,
	B.column_name AS B_COLUMNNAME,
	B.column_default,
	B.data_type AS B_DATATYPE,
	B.character_maximum_length AS B_MAXLENGTH
FROM 
	DB_A.information_schema.columns A
	LEFT OUTER JOIN DB_B.information_schema.columns B 
	ON A.table_name = B.table_name 
	AND A.column_name = B.column_name 
WHERE 
	1=1
	AND B.column_name IS NULL 
	OR B.column_name = '' 
	OR A.column_default <> B.column_default 
	OR A.data_type <> B.data_type 
ORDER BY 
	A.table_name,
	A.column_name

도움이 되어드렸다면 구독 / 좋아요 부탁드립니다.👏🏻

감사합니다.🙂

반응형