2013-07-22 2 views
1

2 개의 다른 데이터베이스에 1 개의 테이블이 있습니다. 데이터베이스의 열 수는 284 개이며 다른 열 수는 281 개이므로 누락 된 열이 3 개 있습니다.
누락 된 열을 찾는 데 도움이되는 이라는 항목이과 같음을 알았 기 때문에 도구가 아닙니다.
예 :
다른 2 개의 데이터베이스에있는 테이블의 열을 비교합니다.

데이터베이스 (1), 컬럼

2 열 3 열

column4
COLUMN5
column6

데이터베이스 (2)
컬럼 1
기둥, 트러스, 빔 MN2
3 열

COLUMN5 4가 누락 위의 예 열에서
column6


, 누락 된 열이 무엇인지 말해 줄 수 사이베이스에서 쿼리가?

답변

2

두 개의 서로 다른 데이터베이스에있는 두 개의 테이블이 개 임시 테이블을 만들고, # TableColumns1 및 #의 TableColumns2이

CREATE TABLE #TableColumns1(ColumnName VARCHAR(255)) 
CREATE TABLE #TableColumns2(ColumnName VARCHAR(255)) 

INSERT INTO #TableColumns1 
SELECT SC.column_name 
FROM SYS.SYSCOLUMN SC, SYS.SYSTABLE ST 
WHERE SC.table_id = ST.table_id AND ST.table_name = '<DatabaseName1.TableName1>'; 

INSERT INTO #TableColumns1 
SELECT SC.column_name 
FROM SYS.SYSCOLUMN SC, SYS.SYSTABLE ST 
WHERE SC.table_id = ST.table_id AND ST.table_name = '<DatabaseName2.TableName2>'; 

이제 누락 된 컬럼의 실제 결과를 포함 할 또 하나의 임시 테이블 #MissingTableColumns 만들기 가정

CREATE TABLE #MissingTableColumns(ColumnName VARCHAR(255), TableName VARCHAR(255)) 

INSERT INTO #MissingTableColumns 
(ColumnName, TableName) 
SELECT ColumnName, '<Table1Name>' 
FROM #TableColumns1, #TableColumns2 
WHERE #TableColumns1.ColumnName *= #TableColumns2.ColumnName 

INSERT INTO #MissingTableColumns 
(ColumnName, TableName) 
SELECT ColumnName, '<Table2Name>' 
FROM #TableColumns1, #TableColumns2 
WHERE #TableColumns1.ColumnName =* #TableColumns2.ColumnName 

희망이 있으면 문제가 해결됩니다.

+0

눈부신 멋진 대답 Abhishek – Moudiz

관련 문제