假设我有两个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方法是理想的,所以我可以使用cx_Oracle在Python中执行此操作,但如果需要,我可以启动一个shell脚本。
答案 0 :(得分:1)
DBMS_METADATA听起来像你正在寻找的包
select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;
然后你可以用EXECUTE IMMEDIATE运行它
答案 1 :(得分:1)
select dbms_metadata.get_ddl('TABLE','FOO','SCHEMA_NAME') from dual;
这将返回创建/重新创建表所需的DDL。有一点需要注意,这将返回源数据库中使用的表空间(在您的情况A中),因此您需要确保它们存在于db B中,并且您已连接的用户具有适当的配额。