뭐... 엑셀로 바로 출력하자고 하니...
깔아야 하는것들이 너무 많고 -_-...
버젼별로 차이도 존재하니.. 귀찮아... 하앍....
그래서 걍.. 수작업 -_-
별도로 설치할 필요는 없고
아래와 같이 실행하여 spool 된 파일을 excel에서 불러
다시 가공처리...
뭐... 짜는 것도 그리 어렵지 않지만 후후.... -_-...
spool '/oracle/20110106_table.txt'
SET SERVEROUTPUT ON;
set serveroutput on size unlimited;
DECLARE
L_TABLE_NAME VARCHAR2(2000);
M_NO NUMBER(9) := 1;
L_NO NUMBER(9);
CURSOR TABLE_DEF_LIST IS
select A.TABLE_NAME, B.COMMENTS from USER_TABLES A, USER_TAB_COMMENTS B WHERE A.TABLE_NAME=B.TABLE_NAME
order by A.TABLE_NAME;
CURSOR TABLE_LIST IS
SELECT
B.COLUMN_NAME "컬럼ID",
B.COMMENTS "컬럼명",
A.DATA_TYPE || '(' || A.DATA_LENGTH || ')' "타입",
A.DATA_LENGTH "길이",
A.NULLABLE "NULLABLE",
CASE WHEN TRIM(C.COLUMN_NAME) IS NOT NULL THEN 'Y' ELSE 'N' END "KEY",
DATA_DEFAULT "DF"
FROM USER_TAB_COLS A, USER_COL_COMMENTS B, DBA_CONS_COLUMNS C
WHERE 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 = L_TABLE_NAME;
N_DEFAULT VARCHAR2(2000);
TABLE_LIST_CNT TABLE_LIST%ROWTYPE;
BEGIN
BEGIN
FOR TABLE_DEF_LIST_GET IN TABLE_DEF_LIST LOOP
L_TABLE_NAME := TABLE_DEF_LIST_GET.TABLE_NAME;
DBMS_OUTPUT.PUT_LINE('순번 : ' || M_NO);
DBMS_OUTPUT.PUT_LINE('테이블 ID : ' || TABLE_DEF_LIST_GET.TABLE_NAME);
DBMS_OUTPUT.PUT_LINE('테이블 설명 : ' || TABLE_DEF_LIST_GET.COMMENTS);
DBMS_OUTPUT.PUT_LINE('No.' || '***' || '컬럼ID' || '***' || '컬럼명' || '***' || '타입' || '***' || '길이' || '***' || 'NULL' || '***'|| 'KEY' || '***' ||'DEFAULT');
M_NO := M_NO + 1;
L_NO := 1;
BEGIN
FOR TABLE_LIST_CNT IN TABLE_LIST LOOP
--FETCH TABLE_LIST INTO TABLE_LIST_CNT; -- 한행 씩 읽기
EXIT WHEN TABLE_LIST%NOTFOUND; -- 데이터가 발견되지 않으면 종료
N_DEFAULT := '';
N_DEFAULT := TABLE_LIST_CNT.DF ; -- LONG 데이터를 VARCHAR2로 변환
DBMS_OUTPUT.PUT_LINE(L_NO || '***' || TABLE_LIST_CNT.컬럼ID || '***' || TABLE_LIST_CNT.컬럼명 || '***' || TABLE_LIST_CNT.타입 || '***' || TABLE_LIST_CNT.길이 || '***' || TABLE_LIST_CNT.NULLABLE || '***'|| TABLE_LIST_CNT.KEY || '***' ||N_DEFAULT);
L_NO := L_NO + 1;
END LOOP;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('** 테이블 컬럼 내용 조회 오류 발생 ! ** ');
END;
DBMS_OUTPUT.PUT_LINE(' ');
DBMS_OUTPUT.PUT_LINE('===========================================================');
DBMS_OUTPUT.PUT_LINE(' ');
END LOOP;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('** 테이블 조회 오류 발생 ! ** ');
END;
END;
/
spool off |