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

时间:2017-10-16 01:22:20

标签: sql oracle partitioning

表t1已分区且有数据。

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

CREATE TABLE t2
TABLESPACE ts1
  AS 
select * from t1;

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

2 个答案:

答案 0 :(得分:1)

使用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;

答案 1 :(得分:-1)

在同一模式中不可能 - 它将失败并且对象已存在错误。如果它是不同的架构,那么试试这个: 通过在导入到另一个模式时重命名表来导出和导入。

否则尝试使用DBMS_METADATA.GET_DDL。