본문 바로가기

study/인턴일지

[DB/ORACLE]ORACLE 컬럼 정보조회

급히 테이블 정의서를 작성하던 중 엔티티정의서는 일일이 적기엔 무리였다ㅜㅜ

처음에 노가다로 일일이 적다가 팀원분이 알려준 방법..

테이블 하나하나씩 컬럼을 출력해주는 쿼리를 작성하여 테이블을 출력한 후

엑셀파일로 저장해서 복사 붙여넣기하면 끝이였다!

 

더보기

SELECT
         COLUMN_ID AS SEQ
        ,( SELECT NVL(D.POSITION, '')
              FROM ALL_CONS_COLUMNS D
                 , all_constraints E
             WHERE D.OWNER           = 'owner'
               AND D.OWNER           = A.OWNER
               AND D.TABLE_NAME      = A.TABLE_NAME
               AND D.COLUMN_NAME     = A.COLUMN_NAME
               AND D.OWNER           = E.OWNER
               AND D.TABLE_NAME      = E.TABLE_NAME
               AND D.CONSTRAINT_NAME = E.CONSTRAINT_NAME
               AND E.CONSTRAINT_TYPE = 'P') AS PK
        ,( SELECT CASE WHEN D.POSITION is null then ''
                       ELSE 'V'
                   END
              FROM ALL_CONS_COLUMNS D
                 , all_constraints E
             WHERE D.OWNER           = ['owner']
               AND D.OWNER           = A.OWNER
               AND D.TABLE_NAME      = A.TABLE_NAME
               AND D.COLUMN_NAME     = A.COLUMN_NAME
               AND D.OWNER           = E.OWNER
               AND D.TABLE_NAME      = E.TABLE_NAME
               AND D.CONSTRAINT_NAME = E.CONSTRAINT_NAME
               AND E.CONSTRAINT_TYPE = 'R') AS FK
         , A.COLUMN_NAME AS COLUMN_ID
         , C.COMMENTS
         , A.DATA_TYPE
         , A.DATA_LENGTH
         , A.NULLABLE
         , A.DATA_DEFAULT
      FROM ALL_TAB_COLUMNS  A
         , ALL_TAB_COMMENTS B
         , ALL_COL_COMMENTS C
        WHERE A.OWNER = 'owner'
        AND B.OWNER = 'owner'
        AND C.OWNER = 'owner'
        AND A.OWNER = B.OWNER
        AND A.OWNER = C.OWNER
        AND A.TABLE_NAME  = B.TABLE_NAME
        AND A.TABLE_NAME  = C.TABLE_NAME
        AND A.COLUMN_NAME = C.COLUMN_NAME
        AND A.TABLE_NAME = 'table_name'
        ORDER BY 1

빨간 부분은 직접 db정보를 넣으면 되고 owner의 정보는

빨간박스안에 user의 이름을 적어주면 된다.