如何在Oracle中将分区从一个表导入另一个表?

时间:2010-03-23 15:28:56

标签: oracle database-partitioning

我想知道以下步骤是否可行以及速度有多快:

  1. 在表A中创建名为part1的分区
  2. 删除表B中的分区part1
  3. 将表A分区part1导入表B
  4. 如果可能的话,你能给我一个例子吗?或者我可以看到的任何资源?

    请注意,表格具有完全相同的结构。

1 个答案:

答案 0 :(得分:3)

您可以使用ALTER TABLE ... EXCHANGE PARTITION命令执行类似操作。这将使用具有相同结构的表交换单个分区。

一个小例子:

/* Partitionned Table Creation */
SQL> CREATE TABLE table_a (
  2     ID NUMBER PRIMARY KEY,
  3     DATA VARCHAR2(200)
  4  )
  5  PARTITION BY RANGE (ID) (
  6     PARTITION part100 VALUES LESS THAN (100),
  7     PARTITION part200 VALUES LESS THAN (200)
  8  );

Table created

/* Swap table creation */
SQL> CREATE TABLE swap_table (
  2     ID NUMBER PRIMARY KEY,
  3     DATA VARCHAR2(200)
  4  );

Table created

SQL> INSERT INTO swap_table SELECT ROWNUM, 'a' FROM dual CONNECT BY LEVEL <= 99;

99 rows inserted

SQL> select count(*) from table_a partition (part100);

  COUNT(*)
----------
         0

这会将分区part100与转换表swap_table交换:

SQL> ALTER TABLE table_a EXCHANGE PARTITION part100 WITH TABLE swap_table;

Table altered

SQL> select count(*) from table_a partition (part100);

  COUNT(*)
----------
        99