繁体   English   中英

Oracle 12c-如何使用现有表(如第一个表)创建一个包含所有数据,分区和索引的新表?

[英]Oracle 12c - how to create a new table form existing table with all data, partitions and indexes like in first table?

表t1已分区并具有数据。

我正在使用以下命令将数据从t1传输到t2:

CREATE TABLE t2
TABLESPACE ts1
  AS 
select * from t1;

但是,这会复制所有数据,但不会像t1一样创建分区。 是否有命令将所有数据以及分区和索引从t1复制到t2?

使用dbms_metadata获取整个结构。

SELECT dbms_metadata.get_ddl( 'TABLE', 'SOURCE_TABLE_NAME' ) FROM DUAL;

运行从该查询生成的DDL ,用新的表名替换表名。

如果您的source_table在其他架构中,则

SELECT dbms_metadata.get_ddl( 'TABLE', 'SOURCE_TABLE_NAME', 'SOURCE_SCHEMA_NAME' ) FROM DUAL;

在同一模式下不可能-它将因对象已存在错误而失败。 如果它是不同的架构,请尝试以下操作:在导入到另一个架构时,通过重命名表来进行导出和导入。

否则,请尝试使用DBMS_METADATA.GET_DDL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM