2014-09-03 6 views
0

Я хочу создать таблицу, используя CTAS секционированной таблицы. Новая таблица должна иметь все данные и разделы, подразделы старой таблицы. Как это сделать?CREATE TABLE AS select * from partitioned table

ответ

1

Вам нужно сначала создать новую таблицу со всеми разделами, вы не можете добавить определения разделов в CTAS. После создания таблицы вы можете заполнить ее, используя insert into .. select.

Вы можете использовать dbms_metadata.get_ddl, чтобы получить определение старой таблицы.

select dbms_metadata.get_ddl('TABLE', 'NAME_OF_EXISTING_TABLE') 
from dual; 

Сохранить вывод, что в сценарий, сделать поиск и замену, чтобы настроить имя таблицы, а затем запустить create table, а затем запустить insert into ... select ...

+0

Привет Когда я переключаю на Google я наткнулся ниже решение, хотя и это не сработало для меня, некоторые говорят, что работали на них, запрос: /** CREATE TABLE SUN_PART_EMP PARTITION BY хэш (Deptno) ПЕРЕГОРОДКИ 2 AS SELECT * FROM EMP; **/ я не понял смысл второго появления разделов т.е. ПОДСИСТЕМАМ 2 , если вы понимаете, пожалуйста, объясните ссылка: https://community.oracle.com/thread/616443?start=0&tstart= 0 – Shriraj

+0

Первая часть части @shriraj объясняет схему разбиения, вторая указывает, сколько будет создано разделов – Sathya

+0

Привет, Satya, Моя старая таблица EMP имеет два столбца col_1, col_2. раздел на col_1 и подразделение на coll_2. Будет ли это создано также в таблице SUN_PART_EMP? с указанным выше кодом? – Shriraj

Смежные вопросы