2009-07-28 10 views
0

Angenommen, ich habe zwei Oracle-Datenbanken. Wir werden sie rufen Datenbank A und Datenbank BGibt es eine Möglichkeit, eine Oracle-Tabellendefinition programmgesteuert von einer Datenbank in eine andere zu verschieben?

Jetzt nehme ich eine Tabelle in der Datenbank A, die wie folgt definiert ist:

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) 
) 

... Gibt es eine einfache Möglichkeit, diese gleiche Tabelle zu erstellen, in Datenbank B mit demselben Primärschlüssel und demselben Fremdschlüssel, aber ohne Daten? Es wäre ideal, wenn es eine reine SQL-Methode gäbe, also kann ich das in Python mit cx_Oracle machen, aber ich kann ein Shell-Skript bei Bedarf starten.

+1

siehe diese Frage, es ist sehr ähnlich: http://StackOverflow.com/Questions/1195410/Create-Table-Reverse-Engineering-in-Oracle – akf

Antwort

1

DBMS_METADATA klingt wie das Paket Sie suchen

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

Dann führen Sie könnte es mit

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

Diese Sie notwendig die DDL kehrt SOFORT AUSFÜHREN, um die Tabelle zu erstellen/neu erstellen. Beachten Sie, dass dies die Tablespaces zurückgibt, die in der Quelldatenbank (in Ihrem Fall A) verwendet werden. Sie müssen also sicherstellen, dass sie in db B vorhanden sind und der Benutzer, den Sie verbunden haben, über entsprechende Kontingente verfügt.

Verwandte Themen