반응형

Oracle 로고

특정 데이터만을 가지고 있을 때, 해당 데이터가 어떤 테이블의 어떤 컬럼에 포함되어 있는지를 확인하기 위한 방법을 기록한다.


먼저, 특정 데이터만 가지고 있을 때 해당 특정 데이터가 모든 테이블과 모든 컬럼에 대해 SELECT문을 만들어서 조회를 하면 된다. UNION을 통해서 말이다.

 

아래의 쿼리를 보면, USER_TAB_COLUMNS의 메타 데이터 테이블을 사용하여 테이블 이름, 컬럼이름 등을 가져오고, COLUMN_NAME에서 특정 데이터를 가지고 있는 것을 조회하는 쿼리다.

SELECT 'SELECT ''' || TABLE_NAME || ''', ''' || COLUMN_NAME || ''',' || COLUMN_NAME || ' FROM ' 
       || TABLE_NAME || ' WHERE ' || COLUMN_NAME || '= ''특정 데이터 값'' UNION ' 
  FROM USER_TAB_COLUMNS

 

 

위의 쿼리를 실행하면 아래와 같이 결과가 나온다. 이 결과를 가져와서 조회를 실행하면 어떤 테이블에 어떤 컬럼에 특정 데이터가 있는지를 보여준다.

SELECT 'TESTT', 'COLTEST01',SADJKY FROM TESTT WHERE COLTEST01 = 'A' UNION 
SELECT 'TESTT', 'COLTEST02',WAREKY FROM TESTT WHERE COLTEST02 = 'A' UNION 
SELECT 'TESTT', 'COLTEST03',ADJUTY FROM TESTT WHERE COLTEST03 = 'A' UNION 
SELECT 'TESTT', 'COLTEST04',DOCDAT FROM TESTT WHERE COLTEST04 = 'A' UNION 
SELECT 'TESTT', 'COLTEST05',DOCCAT FROM TESTT WHERE COLTEST05 = 'A' UNION 
SELECT 'TESTT', 'COLTEST06',ADJUCA FROM TESTT WHERE COLTEST06 = 'A' UNION 
SELECT 'TESTT', 'COLTEST07',USRID1 FROM TESTT WHERE COLTEST07 = 'A' UNION 
SELECT 'TESTT', 'COLTEST08',UNAME1 FROM TESTT WHERE COLTEST08 = 'A' UNION

 

 

추가적으로, 특정 데이터가 모든 테이블에서 모든 컬럼 중 특정 데이터를 포함되어 있는 것을 확인하려면 아래의 조회 쿼리를 사용하면 된다.

SELECT 'SELECT ''' || TABLE_NAME || ''', ''' || COLUMN_NAME || ''',' || COLUMN_NAME || ' FROM ' 
       || TABLE_NAME || ' WHERE ' || COLUMN_NAME || ' LIKE ''%푸드%'' UNION ' 
  FROM USER_TAB_COLUMNS

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기