본문 바로가기

DB

Oracle Table 목록 추출

Oracle DB 테이블 목록 추출 쿼리 입니다.

테이블 정의서 만들때 주로 사용하고 있는데 구글에서 찾아보면 많이 있습니다.

 

--테이블 목록 추출

 SELECT DISTINCT S1.OWNER, S1.TABLE_NAME AS 물리테이블명,
         COMMENTS AS 논리테이블명,
         TABLESPACE_NAME AS 테이블스페이스명,
         NUM_ROWS AS ROW수,     --- analize 를 해야 정확한 Row수를 얻는다.
         LAST_ANALYZED AS  최종분석일자,
         PARTITIONED AS 파티션여부
FROM ALL_TABLES S1,
        ALL_TAB_COMMENTS S2
WHERE S1.TABLE_NAME = S2.TABLE_NAME       
  AND S2.TABLE_TYPE  = 'TABLE'    -- VIEW (뷰, 테이블 따로 SELECT 
  AND TABLESPACE_NAME IS NOT NULL --PLAN TABLE 등을 빼기 위해
  AND S1.OWNER IN ('Oracle')
--  AND NUM_ROWS >0
--  AND COMMENTS IS NOT NULL
ORDER BY  S1.OWNER,S1.TABLE_NAME ;

 

 

--테이블 목록 추출

select   A.COLUMN_ID, A.COLUMN_NAME,C.COMMENTS,

            A.DATA_TYPE

         || case

               when A.DATA_PRECISION is not null

                  then '(' || A.DATA_PRECISION || ',' || A.DATA_SCALE || ')'

               else '(' || A.DATA_LENGTH || ')'

            end DATA_TYPE, NULLABLE, 

         case

            when B.COLUMN_NAME is not null

               then 'PK'

         end as PK

    from ALL_TAB_COLS A ,ALL_IND_COLUMNS B, ALL_COL_COMMENTS C

        where A.OWNER = B.TABLE_OWNER (+)

             and A.TABLE_NAME = B.TABLE_NAME (+)

             and A.COLUMN_NAME = B.COLUMN_NAME (+)

             AND A.TABLE_NAME = C.TABLE_NAME (+)

AND A.COLUMN_NAME = C.COLUMN_NAME (+)

      and A.TABLE_NAME = 'XXXXXXX'    

order by A.COLUMN_ID;