Копировать / таблицы, сохраняя старые индексы без изменений в SQL - PullRequest
0 голосов
/ 07 февраля 2020

enter image description here

У меня есть две таблицы в моей схеме. Таблица 1 старая, а Таблица 2 новая, и теперь каким-то образом я хочу, чтобы Таблица 2 была каким-то образом скопирована / переименована в Таблица 1. В то же время я хочу сохранить индексы в старой таблице -> Table1 после переименования / копирования.

Я использую SQL Developer для достижения этой цели. Надеюсь, я четко объяснил свои сомнения.

  1. Если я опущу Таблицу1, я потеряю Индексы.
  2. Я не могу переименовать Таблицу2 в Таблицу1, пока она не будет удалена.
  3. Я не вижу возможности скопировать индексы на sql разработчику.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Обрезать table1 и заново вставить данные:

truncate table table1;

insert into table1 ( . . . )
    select . . .
    from table2;

Если две таблицы имеют одинаковые столбцы в одинаковом порядке, вы можете выполнить вставку без списка столбцов:

insert into table1
    select *
    from table2;
0 голосов
/ 07 февраля 2020

А как насчет этой последовательности шагов?

-- original table
create table table2 
(x number);

create index table2_idx on table2(x);


-- now create the copy table
create table table1
as
select * from table2;

-- create new index
create index table1_idx on table1(x);

-- now switch 
drop table table2;
rename table1 to table2;

Замените ваши собственные определения и имена индексов.

Вы найдете это в индексе DDL на вкладке обзора таблицы SQL.

...