Как я могу импортировать раздел из одной таблицы в другую в Oracle? - PullRequest
2 голосов
/ 23 марта 2010

Я хотел бы знать, возможны ли следующие шаги и как быстро это происходит:

  1. Создать раздел с именем part1 в таблице A
  2. Отбросить часть part1 в таблице B
  3. Импорт части таблицы 1 раздела A в таблицу B

Можете ли вы дать мне пример, если это действительно возможно? Или какие ресурсы я могу посмотреть?

Обратите внимание, что таблицы будут иметь точно такую ​​же структуру.

1 Ответ

3 голосов
/ 23 марта 2010

Вы можете сделать что-то подобное с помощью команды 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
...