2009-07-28 3 views
0

두 개의 Oracle 데이터베이스가 있다고 가정합니다.한 데이터베이스에서 다른 데이터베이스로 오라클 테이블 정의를 프로그래밍 방식으로 "이동"할 수있는 방법이 있습니까?

CREATE TABLE foo 
(
    foo_id INT PRIMARY KEY, 
    some_text VARCHAR2(10), 
    other_table_id INT 

    CONSTRAINT some_fk_constraint 
     FOREIGN KEY (other_table_id) 
     REFERENCES other_table(other_table_id) 
) 

...이 같은 테이블을 만들 수있는 쉬운 방법이있다 : 우리는 데이터베이스 A와 데이터베이스 B.를 부를 것이다

는 이제 다음과 같이 정의 된 데이터베이스 A의 테이블이 있다고 가정 같은 기본 키와 동일한 외래 키가 있지만 데이터가없는 데이터베이스 B? 순수한 SQL 메서드가 있으면 이상적입니다. 그래서 파이썬에서 cx_Oracle을 사용하여이 작업을 수행 할 수 있습니다. 그러나 필요한 경우 셸 스크립트를 시작할 수 있습니다.

+1

이 질문은 매우 유사합니다. http://stackoverflow.com/questions/1195410/create-table-reverse-engineering-in-oracle – akf

답변

1

DBMS_METADATA 당신이 그럼 당신은

1
 
select dbms_metadata.get_ddl('TABLE','FOO','SCHEMA_NAME') from dual; 

이 생성/테이블을 다시 당신이 DDL이 필요한 반환이 IMMEDIATE EXECUTE으로 실행할 수

select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual; 

찾고있는 패키지처럼 들린다. 한 가지주의 할 점은, 소스 db (귀하의 경우 A)에서 사용 된 테이블 스페이스를 반환하므로 DB B에 존재하는지, 연결된 사용자가 적절한 할당량을 갖고 있는지 확인해야합니다.