0

假设我有两个 Oracle 数据库。我们将它们称为数据库 A 和数据库 B。

现在假设我在数据库 A 中有一个表,其定义如下:

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

...是否有任何简单的方法可以在数据库 B 中使用相同的主键和相同的外键创建同一张表,但没有任何数据?如果有一个纯 SQL 方法,那将是理想的,这样我可以在 Python 中使用 cx_Oracle 执行此操作,但如果需要,我可以启动一个 shell 脚本。

4

2 回答 2

1

DBMS_METADATA 听起来像您正在寻找的包

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

然后你可以用 EXECUTE IMMEDIATE 运行它

于 2009-07-28T18:16:52.723 回答
1
从对偶中选择 dbms_metadata.get_ddl('TABLE','FOO','SCHEMA_NAME'); 

这将为您返回创建/重新创建表所需的 DDL。需要注意的一点是,这将返回源数据库中使用的表空间(在您的情况下为 A),因此您需要确保它们存在于数据库 B 中,并且您连接的用户具有适当的配额。

于 2009-07-28T18:18:04.920 回答