ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MYSQL] DB 테이블 및 컬럼 변경사항 추출 스크립트
    Physical 2021. 7. 14. 15:33
    -- 테이블
    select '추가' as type
         , b.table_schema, b.table_name
         , a.table_schema, a.table_name
      from information_schema.tables a
      left join information_schema.tables b on a.table_name = b.table_name
                                           and b.table_schema = 'OLD_DB'
     where a.table_schema = 'NEW_DB'
       and b.table_name is null
    union all
    select '삭제' as type
         , b.table_schema, b.table_name
         , a.table_schema, a.table_name
      from information_schema.tables a
      left join information_schema.tables b on a.table_name = b.table_name
                                           and b.table_schema = 'NEW_DB'
     where a.table_schema = 'OLD_DB'
       and b.table_name is null;
     
    -- 컬럼
    select '삭제' as type
         , a.table_schema, a.table_name, a.column_name, a.column_type, a.column_comment, a.is_nullable, a.column_default
         , b.table_schema, b.table_name, b.column_name, b.column_type, b.column_comment, b.is_nullable, b.column_default
      from information_schema.columns a
      left join information_schema.columns b on a.table_name = b.table_name
                                            and a.column_name = b.column_name
                                            and b.table_schema = 'NEW_DB'
     where a.table_schema = 'OLD_DB'
       and b.table_name is null
    union all
    select '추가' as type
         , b.table_schema, b.table_name, b.column_name, b.column_type, b.column_comment, b.is_nullable, b.column_default
         , a.table_schema, a.table_name, a.column_name, a.column_type, a.column_comment, a.is_nullable, a.column_default
      from information_schema.columns a
      left join information_schema.columns b on a.table_name = b.table_name
                                            and a.column_name = b.column_name
                                            and b.table_schema = 'OLD_DB'
     where a.table_schema = 'NEW_DB'
       and b.table_name is null
    union all
    select concat(trim(trailing ',' from type), ' 변경') as type
         , db1, tbl1, col1, type1, comment1, nullable1, default1
         , db2, tbl2, col2, type2, comment2, nullable2, default2
      from (
            select concat(
                          if(ifnull(a.column_type, '') <> ifnull(b.column_type, ''), 'column_type,', '')
                        , if(ifnull(a.column_comment, '') <> ifnull(b.column_comment, ''), 'comment,', '')
                        , if(ifnull(a.is_nullable, '') <> ifnull(b.is_nullable, ''), 'nullable,', '')
                        , if(ifnull(a.column_default, '') <> ifnull(b.column_default, ''), 'default', '')
                         ) as type
                 , a.table_schema as db1, a.table_name as tbl1, a.column_name as col1, a.column_type as type1, a.column_comment as comment1, a.is_nullable as nullable1, a.column_default as default1
                 , b.table_schema as db2, b.table_name as tbl2, b.column_name as col2, b.column_type as type2, b.column_comment as comment2, b.is_nullable as nullable2, b.column_default as default2
              from information_schema.columns a
              join information_schema.columns b on a.table_name = b.table_name
                                               and a.column_name = b.column_name
                                               and b.table_schema = 'NEW_DB'
             where a.table_schema = 'OLD_DB'
               and (
                    ifnull(a.column_type, '') <> ifnull(b.column_type, '')
                    or ifnull(a.column_comment, '') <> ifnull(b.column_comment, '')
                    or ifnull(a.is_nullable, '') <> ifnull(b.is_nullable, '')
                    or ifnull(a.column_default, '') <> ifnull(b.column_default, '')
                   )
           ) a;

    MySQL용 (5.7)

    시간 되면 좀 더 고도화 하자

    'Physical' 카테고리의 다른 글

    [MSSQL] DB내의 모든 테이블 및 인덱스 현황  (0) 2021.07.30
    [MSSQL] view nolock 힌트 테스트  (0) 2021.07.29
    파싱 후 집계 샘플  (0) 2021.07.16
    생일 데이터 집계시 이슈  (0) 2021.05.26
Designed by Tistory.