2014-09-16 2 views
-2

우리는 압축 여부에 관계없이 파일에서이 100 개의 테이블 이름을 입력하고 호출 할 수있는 방법을 찾고자하는 100 개의 테이블 목록을 가지고 있습니다파일 목록에서 테이블을 쿼리하는 방법

select 
    compression 
from 
    dba_tables 
where 
    table_name ... 

과 같은 SQL 쿼리를 실행 한 다음이 테이블 목록이있는 파일 이름을 지정하십시오.

+1

질문이 명확해야합니다. 달성하고자하는 것을 알려주고, 시도한 코드를 알려주십시오. –

+0

왜 파일명을'IN' 절에 입력 할 수 없습니까? – Rahul

+0

쿼리를 실행하기 위해 어떤 도구를 사용하고 있습니까? SQL * Plus에는 JDBC를 사용하는 경우와 다른 옵션이있을 수 있습니다. –

답변

0

테이블 ("my_list")에 목록을로드 한 다음 dba_tables에 가입 할 수 있습니다. 뭔가 같은 :

with compressed_tables as (
    select owner, table_name, tablespace_name 
    from dba_tables 
    where compression = 'ENABLED' 
) 
select c.table_name 
from compressed_tables c, my_list l 
where c.table_name = l.table_name 
order by 1; 

업데이트 : 당신은, 당신은 확실히 쿼리에 그것을 사용할 수있는 테이블 이름의 복사/붙여 넣기 목록을 사용하고 싶다면

(별도의 테이블로로드하지 않고). 쉼표로 구분 된 테이블 이름 그냥 작은 따옴표 :

select table_name 
from dba_tables 
where compression = 'ENABLED' 
and table_name IN (
'TABLE_A', 
'TABLE_B', 
'TABLE_C' 
); 
+0

IN 절을 사용하면 수동으로 100 개의 테이블 이름을 입력해야하거나 파일을 입력으로 사용할 수 있습니까 – user3570687

+0

이 오류는 IN 구문에 잘못된 구문이 있습니다 – user3570687

+0

SQL> dba_tables에서 COMPRESSION 선택 where table_name in ("/ oracle/EWD/abc"); DBA_TABLES에서 선택 COMPRESSION 곳 ("/ 오라클/EWD/ABC") 라인 1에서 * 오류 TABLE_NAME : ORA-00904 : "/ 오라클/EWD/ABC"무효 식별자 SQL> 이상 ABC! USR02 USR03 USR04 – user3570687

0

당신 MUST는 OS의 세부 사항을 언급. 당신의 OS가 경우 예를를 들어

, * NIX, 당신의 쉘 스크립트에서 당신은 목록에서 테이블 이름을 통해 루프를 필요로하는 당신은 단지 열 것이라고 익명의 블록에 매개 변수로 그들을 패스 sqlplus 연결.

Windows OS의 경우 특정 위치에 table_names 목록이있는 배치 파일을 가질 수 있으며 기본 스크립트 만 호출하게됩니다.

+0

thx lalit, 아직 쉘 스크립트가 없지만 단지 IN 절이있는 SQL 문을 사용하고있었습니다. – user3570687

+0

DB 테이블을 치는 것이 좋지 않으므로 OS 파일에서 직접 테이블 이름을 사용하는 것이 좋습니다. –

+0

당신은 유닉스 스크립트 샘플을 가지고있을 것인가? 솔라리스 10 – user3570687

관련 문제