Oracle 12c - 如何创建一个新的 table 表单现有 table,其中包含第一个 table 中的所有数据、分区和索引?
Oracle 12c - how to create a new table form existing table with all data, partitions and indexes like in first table?
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
将 table 名称替换为新的 table 名称。
如果您的 source_table 在不同的架构中,则
SELECT dbms_metadata.get_ddl( 'TABLE', 'SOURCE_TABLE_NAME', 'SOURCE_SCHEMA_NAME' ) FROM DUAL;
在同一架构中不可能 - 它会因对象已存在错误而失败。如果它是不同的模式,那么试试这个:
通过在导入到另一个模式时重命名 table 来导出和导入。
否则尝试 DBMS_METADATA.GET_DDL。
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
将 table 名称替换为新的 table 名称。
如果您的 source_table 在不同的架构中,则
SELECT dbms_metadata.get_ddl( 'TABLE', 'SOURCE_TABLE_NAME', 'SOURCE_SCHEMA_NAME' ) FROM DUAL;
在同一架构中不可能 - 它会因对象已存在错误而失败。如果它是不同的模式,那么试试这个: 通过在导入到另一个模式时重命名 table 来导出和导入。
否则尝试 DBMS_METADATA.GET_DDL。