오라클 전체 테이블, 컬럼 조회 (전체 데이터 수, 전체 컬럼 검색)
오라클 내의 전체 테이블 또는 컬럼을 조회하려면 SYS내의 VIEW를 이용하면됩니다.
1. ALL_TABLES
- 로그인 된 계정의 권한으로 접근할 수 있는 모든 테이블들
- 예 ) 테이블명에 "테스트"를 포함한 테이블 검색 :
SELECT * FROM ALL_TABLES WHERE LIKE '%테스트%';
2. USER_TABLES
- 로그인 된 계정이 소유하고 있는 테이블들
SELECT * FROM ALL_TABLES WHERE OWNER = '로그인된계정' 과 같다.
3. ALL_TAB_COLUMNS
- 로그인 된 계정의 권한으로 접근할 수 있는 모든 테이블 내의 컬럼들
- 예 ) 컬럼명에 "테스트"를 포함한 컬럼 검색
SELECT * FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%테스트%'
4. USER_TAB_COLUMNS
- 로그인된 계정이 소유하고 있는 테이블들
SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = '로그인된계정' 과 같다.
위 테이블들을 이용해서 여러 응용이 가능합니다.
그런데..... 속도는 느려요...ㅋㅋ
그대로 일일이 노가다 해서 찾는거 보다는 좋겠죠?
응용 - 1 ) 데이터베이스 전체 데이터 수 구하기 - 아래의 쿼리로 조회된 값들을 이어서 쿼리문을 만들 수 있습니다.
[쿼리문 만들기 위한 조회]
SELECT 'SELECT (' FROM DUAL UNION ALL
SELECT '(SELECT count(*) cnt FROM '||TABLE_NAME||') + ' FROM USER_TABLES UNION ALL
SELECT '0) TOTAL_COUNT FROM DUAL; ' FROM DUAL;
[조회된 결과값으로 쿼리만들기]
SELECT (
(SELECT count(*) cnt FROM T_CNKC_INTG_PRSN_INFO01L1_0329) +
(SELECT count(*) cnt FROM T_CNKC_INTG_DPRT01M1_B) +
...
0) TOTAL_COUNT FROM DUAL;
응용 - 2 ) 데이터베이스 전체 컬럼에서 원하는 데이터 검색 - 아래의 쿼리로 조회된 값들을 이어서 쿼리문을 만들 수 있습니다.
[쿼리문 만들기 위한 조회]
SELECT 'SELECT count('||COLUMN_NAME||') cnt, '''||TABLE_NAME||'.'||COLUMN_NAME||''' target, TO_CHAR('||COLUMN_NAME||') contents FROM '||TABLE_NAME||' WHERE TO_CHAR('||COLUMN_NAME||') like ''%'||'찾을내용'||'%''
GROUP BY '||COLUMN_NAME||'
UNION ALL' as query FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME like '%RTUR_ID%'
ORDER BY TABLE_NAME,COLUMN_ID
[조회된 결과값으로 쿼리만들기]
SELECT count(RTUR_ID) cnt, 'T_CNKC_INTG_USER01H1.RTUR_ID' target, TO_CHAR(RTUR_ID) contents FROM T_CNKC_INTG_USER01H1 WHERE TO_CHAR(RTUR_ID) like '%찾을내용%'
GROUP BY RTUR_ID
UNION ALL
SELECT count(RTUR_ID) cnt, 'T_CNKC_INTG_USER01H1_1114.RTUR_ID' target, TO_CHAR(RTUR_ID) contents FROM T_CNKC_INTG_USER01H1_1114 WHERE TO_CHAR(RTUR_ID) like '%찾을내용%'
GROUP BY RTUR_ID
UNION ALL
SELECT count(RTUR_ID) cnt, 'T_CNKC_INTG_USER01M1.RTUR_ID' target, TO_CHAR(RTUR_ID) contents FROM T_CNKC_INTG_USER01M1 WHERE TO_CHAR(RTUR_ID) like '%찾을내용%'
GROUP BY RTUR_ID
UNION ALL
...
마지막 UNION ALL 삭제