[SQL] 특정 열 이름을 가진 테이블에 대한 Oracle 데이터베이스를 검색?
SQL특정 열 이름을 가진 테이블에 대한 Oracle 데이터베이스를 검색?
우리는 많은 테이블이 큰 Oracle 데이터베이스를 가지고있다. 내가 쿼리하거나 특정 열 이름을 가진 모든 테이블이 있는지 찾기 위해 검색 할 수있는 방법이 있나요?
아이디, FNAME, LNAME, 주소 : IE 나에게 열이있는 모든 테이블을 보여
상세 저는 추가 깜빡 : 나는 다른 스키마를 검색 할 수 있어야합니다. 내가 통해 검색 할 필요가 테이블을 소유하지 않은 연결하는 데 사용해야 하나.
해결법
-
==============================
1.특정 열을 가진 모든 테이블을 확인하는 방법은 다음과 같습니다
특정 열을 가진 모든 테이블을 확인하는 방법은 다음과 같습니다
select owner, table_name from all_tab_columns where column_name = 'ID';
4 열 또는 전부를이 테이블을 확인하는 방법은 다음과 같습니다
select owner, table_name, column_name from all_tab_columns where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS');
(없음 누락 없음)에 4 열이 테이블을 확인하는 방법은 다음과 같습니다
select owner, table_name from all_tab_columns where column_name in ('ID', 'FNAME', 'LNAME', 'ADDRESS') group by owner, table_name having count(*) = 4;
-
==============================
2.당신이 원하는 데이터는 "콜드"메타 데이터 테이블에 있습니다 :
당신이 원하는 데이터는 "콜드"메타 데이터 테이블에 있습니다 :
SELECT * FROM COLS WHERE COLUMN_NAME = 'id'
이 사람은 당신에게 당신이 원하는 모든 열이 테이블의 목록을 제공합니다 :
select distinct C1.TABLE_NAME from cols c1 inner join cols c2 on C1.TABLE_NAME = C2.TABLE_NAME inner join cols c3 on C2.TABLE_NAME = C3.TABLE_NAME inner join cols c4 on C3.TABLE_NAME = C4.TABLE_NAME inner join tab t on T.TNAME = C1.TABLE_NAME where T.TABTYPE = 'TABLE' --could be 'VIEW' if you wanted and upper(C1.COLUMN_NAME) like upper('%id%') and upper(C2.COLUMN_NAME) like upper('%fname%') and upper(C3.COLUMN_NAME) like upper('%lname%') and upper(C4.COLUMN_NAME) like upper('%address%')
다른 스키마에서이 작업을 수행하려면, 그냥 같이 테이블 앞에 스키마를 지정
SELECT * FROM SCHEMA1.COLS WHERE COLUMN_NAME LIKE '%ID%';
당신은 하나 개의 출력 결과에 많은 스키마의 검색을 결합하려는 경우, 당신이 할 수 있습니다 :
SELECT DISTINCT 'SCHEMA1' AS SCHEMA_NAME ,TABLE_NAME FROM SCHEMA1.COLS WHERE COLUMN_NAME LIKE '%ID%' UNION SELECT DISTINCT 'SCHEMA2' AS SCHEMA_NAME ,TABLE_NAME FROM SCHEMA2.COLS WHERE COLUMN_NAME LIKE '%ID%'
-
==============================
3.당신이 열 이름을 정확하게 알고있는 경우 쿼리 아래의 열 이름 사용을 검색하려면
당신이 열 이름을 정확하게 알고있는 경우 쿼리 아래의 열 이름 사용을 검색하려면
select owner,table_name from all_tab_columns where upper(column_name) =upper('keyword');
아래의 정확한 열 사용을 몰라요 경우 열 이름을 검색하려면
select owner,table_name from all_tab_columns where upper(column_name) like upper('%keyword%');
-
==============================
4.여기에 우리가 SQLPLUS 내에서 쉽게 실행할 수 있도록 우리가 findcol.sql에 떨어져 저장했는지 하나입니다
여기에 우리가 SQLPLUS 내에서 쉽게 실행할 수 있도록 우리가 findcol.sql에 떨어져 저장했는지 하나입니다
set verify off clear break accept colnam prompt 'Enter Column Name (or part of): ' set wrap off select distinct table_name, column_name, data_type || ' (' || decode(data_type,'LONG',null,'LONG RAW',null, 'BLOB',null,'CLOB',null,'NUMBER', decode(data_precision,null,to_char(data_length), data_precision||','||data_scale ), data_length ) || ')' data_type from all_tab_columns where column_name like ('%' || upper('&colnam') || '%'); set verify on
from https://stackoverflow.com/questions/1953239/search-an-oracle-database-for-tables-with-specific-column-names by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 디폴트 값으로 새로운 SQL 열을 추가 (0) | 2020.05.30 |
---|---|
[SQL] MySQL의에서 열 이름 바꾸기 (0) | 2020.05.30 |
[SQL] 어떻게 선택 모든 행에 열 값이 고유없는 경우에는 (0) | 2020.05.30 |
[SQL] 어떻게 증가없이 오라클 시퀀스의 현재 값을 검색하는? (0) | 2020.05.30 |
[SQL] FULL의 차이는 가입 및 INNER는 가입 (0) | 2020.05.30 |