2013-07-03 2 views
1

내 스키마에 250+ 개 이상의 테이블이 있으며 DDL (테이블 생성 ...)으로 내보내고 하나의 스크립트로 보내고 싶습니다. 필자는 PLSQL Developer의 내보내기 도구를 사용했습니다.스키마에있는 모든 테이블의 DDL을 내보내는 쿼리

하지만 SQL 내보내기와 같은 오류가 직면하고 있습니다. 약 50 개의 테이블을 수동으로 제거해야하므로 clob 또는 long 또는 long 또는 blob을 사용할 수 없습니다.

거기에 대한 쿼리가 있습니까?. PLSQL Developer의 다른 방법은 실제로 느리기 때문입니다.

+0

"PLSQL에서 내보내기 도구"같은 건 없다. PL/SQL은 프로그래밍 언어이며 "내보내기 도구"가 없습니다. –

+0

그때 나는 그것을 고쳐야하고 PLS/sql 개발자를 말해야합니까? – Moudiz

답변

6

아마이 :

select dbms_metadata.get_ddl('TABLE', table_name) 
from user_tables 

원하는 경우 테이블을 제외 할 수 있습니다에 :

select dbms_metadata.get_ddl('TABLE', table_name) 
from user_tables 
where table_name not in ('FOO', 'BAR'); 
+0

CREATE TABLE"L_O11 "."_ 이유 "가 있다고 할 수 아니다 @Moudiz : 그러면 도구가 전체 결과를 검색 (또는 표시)하지 않습니다. – Moudiz

+0

했다 anciant 방법으로 인해 열 데이터 형식과 같은 긴 CLOB –

+0

pl/sql 개발자를 사용하고 있는데 어떤 도구를 사용하고 있습니까? – Moudiz

0

스키마 만 지정하고 데이터는 지정하지 않으면 고대 IMP/EXP 도구로이를 수행 할 수 있습니다.

톰 카이트의 솔루션 here에서 : 다음

exp userid=/ owner=some_schema 
imp userid=/ indexfile=foo.sql 

이러한 라인

REM ... 
CONNECT 

을 제거하고 다른 모든 REM의 제거 얻을.

+0

당신은 plsql 도구에서 의미 - "수출? 그렇다면 위의 의미대로 오류에 직면하고 있습니다. 테이블이 길고 clob을 가지고 있기 때문에. 나는 (\t는 "COMP 나는 당신의 쿼리를 사용 , 나는 첫 번째 생성 열 – Moudiz