如何创建一个表作为Oracle中另一个数据库的选择?

问题描述:

是否有可能使用来自不同数据库的SELECT来创建表(在我的开发数据库中)?如何创建一个表作为Oracle中另一个数据库的选择?

我想是这样的:

create tmp_table as select * from prod_db.prod_schema.table 

是否有语法要做到这一点,或者我需要首先创建一个数据库链接?

您必须先创建数据链接

除非创建数据库链接,否则Oracle无法查询其他数据库。如果DB链接存在,如你所说,你要做的:

create tmp_table as select * from [email protected]_db 

@Steve是正确的,必须有一个数据库链接,但语法是:

create tmp_table as select * from [email protected] 
+0

哎呀...得到咬伤(没有一个Oracle数据库在手进行测试)。更正我的答案,thx ... – 2009-07-30 18:21:02

不要忘记创建索引。你可以为这个模式中的所有表,像这样的查询:

SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) 
    FROM USER_INDEXES u; 
+0

我会离开那个dba :) – chris 2009-07-30 19:09:58

+1

大声笑,如果你打算这样做,你可以直接要求你的dba EXP/IMP模式,它会快得多。 – 2009-07-31 08:00:08

CREATE TABLE table_name 
AS SELECT * FROM schema_name.table_name;