본문 바로가기
DataBase/MySQL, MariaDB

DB 전체에서 특정 필드를 찾아야 할 때

by ojava 2017. 11. 29.
반응형

필드 길이를 전체적으로 수정할 일이 생겼다.

인터페이스하는 쪽에서는 정보 주체가 전달하는 대로 데이터 타입을 맞춰야하므로

전체적인 수정이 필요해졌다... ㅠ_ㅠ

 

 

어디서부터 어떻게 손을 대야 하나 고민이 되니까

전체 DB에서 특정 필드를 찾기 위한 쿼리를 날려보도록 하자.

원래 귀찮은 사람이 조금이라도 일을 덜하기 위해서 방법을 찾는다고 하던데 딱 그 격이다.

 

 

 

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_TYPE

   FROM INFORMATION_SCHEMA.COLUMNS

 WHERE TABLE_SCHEMA = '원하는 DB 스키마 입력'

      AND COLUMN_NAME LIKE '%원하는 검색어 입력%'

 

 

 

나의 경우는 이름 필드가 변경될거라 NAME을 기준으로 검색했다.

FILE_NAME, REG_NAME, MOD_NAME 등 다양한 결과가 나오므로 쿼리는 원하는 방식대로 짜시길.

 

여기서 핵심은 INFORMATION_SCHEMA 다.

이 Database를 잘 활용하면 접속한 DB에서 원하는 결과값이나 세팅정보 등을 읽어올 수 있다.

 

 

 

필드가 변경되었으니 테이블 뿐 아니라, Function과 Procedure도 같이 수정해주자.

이 역시도 INFORMATION_SCHEMA.ROUTINES 라는 테이블을 이용하면 쉽게 찾을 수 있다.

 

 

SELECT SPECIFIC_NAME, ROUTINE_TYPE, ROUTINE_DEFINITION

   FROM INFORMATION_SCHEMA.ROUTINES

 WHERE ROUTINE_SCHEMA = '원하는 DB 스키마 입력'

    AND ROUTINE_TYPE in ('FUNCTION', 'PROCEDURE')

    AND ROUTINE_DEFINITION LIKE '%원하는 검색어%'

 

 

 

 

ROUTINE_DEFINITION에는 펑션, 프로시저에 정의된 내용들이 나오므로

그 내용에서 원하는 검색어가 포함되어 있으면 결과값으로 반환된다.

 

 

오늘도 이 포스팅이 빠른 퇴근 정시 퇴근에 도움이 되었길 바라며!

반응형