2017-03-12 12 views
0

からパーティションテーブルを作成することは、私は以下のコマンドを使用して第2のテーブルBを作成したい[Aそれを呼び出すことができます]:私は、既存のパーティションテーブルを持っている既存のパーティション表

Create table B as select * from A where 1=2; 

Aは、パーティションテーブルとIですまた、Bをパーティション表にしたいが、上記のコマンドは通常の表を作成する。

私はパーティションテーブルをクローンする方法はありますか?

答えて

2

表Bのパーティション化句を指定する必要があります.dbms_metadata()を使用してDDLを取得できます。

set long 100000 

select dbms_metadata.get_ddl('TABLE','EMP2') from dual 

    DBMS_METADATA.GET_DDL('TABLE','EMP2') 
    -------------------------------------------------------------------------------- 

    CREATE TABLE "SCOTT"."EMP2" 
    ( "EMPNO" NUMBER(4,0) NOT NULL ENABLE, 
     "ENAME" VARCHAR2(10), 
     "JOB" VARCHAR2(9), 
     "MGR" NUMBER(4,0), 
     "HIREDATE" DATE, 
     "SAL" NUMBER(7,2), 
     "COMM" NUMBER(7,2), 
     "DEPTNO" NUMBER(2,0) 
    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
    STORAGE(
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "SYSTEM" 
    PARTITION BY RANGE ("EMPNO") 
(PARTITION "P1" VALUES LESS THAN (7500) SEGMENT CREATION DEFERRED 
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
NOCOMPRESS LOGGING 
    STORAGE(
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "SYSTEM" , 
PARTITION "P2" VALUES LESS THAN (7600) SEGMENT CREATION DEFERRED 
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
NOCOMPRESS LOGGING 
    STORAGE(
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "SYSTEM") 

それからちょうど分割してから別のテーブルを作成するためのCREATE TABLE文の

構文でテーブル名を変更...

create table junk 
partition by hash(empno) partitions 2 
as 
select * from emp 
where 1=2 
+0

は、どのように私は上記のコマンドでそれを指定するのですか? – Lokesh

+0

答えを例で更新しました。 – BobC

+0

これは私が探しているものではありません。私は列名を指定したくない、私は既存のテーブルからそれらをコピーしたい。あなたの構文は、パーティションテーブルを作成するための標準的なものです、私は別のテーブルから構造をコピーすることによってpartitonedテーブルを作成する構文を探しています。 – Lokesh

関連する問題