Programming/Oracle

TABLE LAYOUT만들기(html이용)

초록깨비 2021. 4. 23. 11:15
728x90

[ PL/SQL DEVELOPER에서 TABLE 전체 LAYOUT을 만드는 방법 - HTML 이용 ]

 

 

1. 아래의 쿼리를 PL/SQL Developer에서 실행한다 

 

WITH TAB_LIST (TABLE_NAME, T_COMMENTS, TABLESPACE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, C_KEY, NOTNULL, DATA_DEFAULT, C_COMMENTS)

  AS(

select TBL.TABLE_NAME,

       TCM.COMMENTS AS T_COMMENTS,

       TBL.TABLESPACE_NAME,

       TCL.COLUMN_ID,

       TCL.COLUMN_NAME,

       case

         when TCL.DATA_TYPE = 'VARCHAR2' or TCL.DATA_TYPE = 'CHAR' or

              TCL.DATA_TYPE = 'NUMBER' then

          TCL.DATA_TYPE || '(' || DATA_LENGTH || ')'

         else

          TCL.DATA_TYPE

       end as DATA_TYPE,

       CON.KEY AS C_KEY,

       decode(NULLABLE, 'N', 'NOT NULL', '') AS NOTNULL,

       '' AS DATA_DEFALUT,

       CCM.COMMENTS AS C_COMMENTS

  from USER_TABLES TBL,

       USER_TAB_COMMENTS TCM,

       USER_TAB_COLUMNS TCL,

       USER_COL_COMMENTS CCM,

       (select CCL.TABLE_NAME,

               COLUMN_NAME,

               case

                 when sum(decode(CONSTRAINT_TYPE, 'P', 1, 0)) > 0 and

                      sum(decode(CONSTRAINT_TYPE, 'F', 1, 0)) > 0 then

                  'PK,FK'

                 when sum(decode(CONSTRAINT_TYPE, 'P', 1, 0)) > 0 then

                  'PK'

                 when sum(decode(CONSTRAINT_TYPE, 'F', 1, 0)) > 0 then

                  'FK'

                 else

                  ''

               end as KEY,

               sum(decode(CONSTRAINT_TYPE, 'C', 0, 'P', 0, 'F', 0, 1)) as CCC

          from USER_CONS_COLUMNS CCL, USER_CONSTRAINTS CNS

         where CCL.CONSTRAINT_NAME = CNS.CONSTRAINT_NAME

         group by CCL.TABLE_NAME, COLUMN_NAME) CON

 where TBL.TABLE_NAME = TCM.TABLE_NAME

   and TBL.TABLE_NAME = TCL.TABLE_NAME

   and TCL.TABLE_NAME = CCM.TABLE_NAME

   and TCL.COLUMN_NAME = CCM.COLUMN_NAME

   and TCL.TABLE_NAME = CON.TABLE_NAME(+)

   and TCL.COLUMN_NAME = CON.COLUMN_NAME(+)

--   AND TBL.TABLE_NAME LIKE 'TA_AP1%'

   and TBL.TABLE_NAME = 'TB_SW23210'

 order by TBL.TABLE_NAME, COLUMN_ID)

 SELECT TR

   FROM (

 SELECT '0' AS TABLE_NAME,

        'http://www.w3.org/TR/html4/loose.dtd">' AS TR,

        0 AS ORD

   FROM DUAL

 UNION ALL

 SELECT DISTINCT TABLE_NAME AS TABLE_NAME,

        '<table style="width: 100%;"><tbody>' AS TR,

        1 AS ORD

  FROM TAB_LIST

 UNION ALL

 SELECT DISTINCT TABLE_NAME AS TABLE_NAME,

        '<tr><th>테이블ID</th><td colspan="5">' || TABLE_NAME ||'</td></tr>'||

        '<tr><th>테이블명</th><td colspan="5">' || T_COMMENTS ||'</td></tr>'||

        '<tr><th>열이름</th><th>데이타유형</th><th>PK</th><th>NULLABLE</th><th>DEFAULT</th><th>COMMENTS</th>' AS TR,

        2 AS ORD

  FROM TAB_LIST

  UNION ALL

  SELECT

     TABLE_NAME AS TABLE_NAME,

    '<tr><td>' || COLUMN_NAME ||

    '</td><td>' || DATA_TYPE  ||

    '</td><td>' || C_KEY ||                              

    '</td><td>' || NOTNULL ||

    '</td><td>' || DATA_DEFAULT ||

    '</td><td>' || C_COMMENTS  ||'</td></tr>' AS TR,

    RANK() OVER(PARTITION BY TABLE_NAME ORDER BY TABLE_NAME, COLUMN_ID) + 2 AS ORD 

    FROM TAB_LIST

  UNION ALL

    SELECT DISTINCT TABLE_NAME AS TABLE_NAME,

           '</tbody></table><hr/>' AS TR,

           998 AS ORD

      FROM TAB_LIST

  UNION ALL

     SELECT 'ZZZZZZZZZZZZZZZZZZZZZZZZZZ' AS TABLE_NAME,

            '</body></html>' AS TR,

            999 AS ORD

     FROM DUAL

        )

  ORDER BY TABLE_NAME, ORD  

 

 

 

 

2) 실행 결과를 복사 한 후에 메모장에 붙여넣기 한다.(앞에 숫자까지 포함되지 않게 결과만 복사)

 

 

3) 메모장에 붙여 넣기 후 파일 확장자를 html로 저장한다(빨간색 box표시 참고) 

 

 

4) 엑셀에서 해당 파일을 연다.(html 파일)

    아래와 같은 양식으로 화면에 테이블 레이아웃 생성 

 

728x90