Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Изменение значений столбца  [new]
gr_alex
Member

Откуда:
Сообщений: 7
Здравствуйте.
Какие есть способы максимально быстро изменить значения столбца в таблице из нескольких сот миллионов записей?
8 июн 18, 12:43    [21478776]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
Elic
Member

Откуда:
Сообщений: 29988
Зависит от.
8 июн 18, 12:48    [21478808]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1206
gr_alex
Здравствуйте.
Какие есть способы максимально быстро изменить значения столбца в таблице из нескольких сот миллионов записей?
Определенно
UPDATE
8 июн 18, 13:05    [21478911]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
gr_alex
Member

Откуда:
Сообщений: 7
шК0ДЕР
gr_alex
Здравствуйте.
Какие есть способы максимально быстро изменить значения столбца в таблице из нескольких сот миллионов записей?
Определенно
UPDATE


слишком долго
8 июн 18, 13:08    [21478920]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
gr_alex,

промежуточный столбец:
1) добавили новый столбец,
2) не торопясь проапдейтили как надо
3) махнули столбцы местами.

Ну или заморочиться по взрослому и сделать через dbms_redefinition с трансформацией данных...
8 июн 18, 13:13    [21478938]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
alwan
Member

Откуда:
Сообщений: 54
alter table TAB rename to TAB_OLD;
create table TAB as select * from TAB_OLD where 1=0;
alter session enable parallel dml;
insert /*+ append parallel */ into TAB select col1, col2, 'value', col4 from TAB_OLD;
commit;
8 июн 18, 14:40    [21479308]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
alwan
Member

Откуда:
Сообщений: 54
alwan
alter table TAB rename to TAB_OLD;
create table TAB as select * from TAB_OLD where 1=0;
alter session enable parallel dml;
insert /*+ append parallel */ into TAB select col1, col2, 'value', col4 from TAB_OLD;
commit;


Если, конечно, есть возможность недоступности данных.
Чтобы минимизировать, можно синоним создать.
8 июн 18, 14:45    [21479334]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
Щукина Анна
gr_alex,

2) не торопясь проапдейтили как надо


Ну-ну, а исходный столбец типа статичный?

SY.
8 июн 18, 14:52    [21479372]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да уж, мы не ищем легких путей

Построить вьюшку с подменой значения (возможно с соответствующими триггерами)
А тем временем потихоньку менять значения в базовой таблице
8 июн 18, 14:55    [21479387]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
Единственно полезная информация была дана первым же ответом, все остальные пытаются подрочить ТС даже не пытаясь понять, что он любит, мужчину, женщину или лошадку там...
8 июн 18, 15:52    [21479566]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
alwan
Member

Откуда:
Сообщений: 54
AlexFF__|,

В первом ответе "полезная информация" отсутствовала.
А в остальных ответах были приведены способы для различных ситуаций, раз уж автор не описал свою подробнее. Вопрос не из тех, по которым возникает желание добиться подробностей и в конце концов выбрать нужный способ. А автор, думаю, в состоянии из предложенного выбрать подходящий.
8 июн 18, 16:03    [21479599]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
Elic
Member

Откуда:
Сообщений: 29988
alwan
раз уж автор не описал свою подробнее.
Но все кинулись метать бисер...
8 июн 18, 16:09    [21479615]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
gr_alex
Member

Откуда:
Сообщений: 7
alwan
alter table TAB rename to TAB_OLD;
create table TAB as select * from TAB_OLD where 1=0;
alter session enable parallel dml;
insert /*+ append parallel */ into TAB select col1, col2, 'value', col4 from TAB_OLD;
commit;


Спасибо помогло.
8 июн 18, 17:24    [21479811]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
merch
Member

Откуда:
Сообщений: 170
gr_alex
Спасибо помогло.


не забудь constraints и indexes перетащить.
8 июн 18, 17:51    [21479885]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
Elic
Member

Откуда:
Сообщений: 29988
gr_alex
alwan
alter table TAB rename to TAB_OLD;
create table TAB as select * from TAB_OLD where 1=0;
alter session enable parallel dml;
insert /*+ append parallel */ into TAB select col1, col2, 'value', col4 from TAB_OLD;
commit;
Спасибо помогло.
RTFM CREATE TABLE ... AS SELECT in Parallel (FAQ)
9 июн 18, 07:22    [21480811]     Ответить | Цитировать Сообщить модератору
 Re: Изменение значений столбца  [new]
alwan
Member

Откуда:
Сообщений: 54
Elic
gr_alex
пропущено...
Спасибо помогло.
RTFM CREATE TABLE ... AS SELECT in Parallel (FAQ)


Тестировал на разных окружениях, insert быстрее. Плюс при CTAS менее удобно контролировать процесс, рост сегмента.
9 июн 18, 11:29    [21481329]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить