Массовое обновление с предложением где с вычисленным значением для каждой строки? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица с 400.000 строками, и я добавил в нее новый столбец. Эта таблица имеет индекс индекса, и я хочу обновить каждую строку с другим значением, которое я уже рассчитал. Например, у меня есть операторы обновления, подобные этим:

UPDATE TABLE SET SECOND_NAME = 'Alfred' WHERE id = 510675;
UPDATE TABLE SET SECOND_NAME = 'Pedro' WHERE id = 123123;
UPDATE TABLE SET SECOND_NAME = 'Robert' WHERE id = 123123;

SECOND_NAME - это новый столбец, который я хочу заполнить, скажем, у меня есть около 400 000 операторов обновления, есть ли способ массового обновления их вбыстрее? Если нет, то есть ли способ узнать заранее, сколько времени потребуется, чтобы обновить их таким образом?

1 Ответ

0 голосов
/ 15 октября 2019

Я думаю, что ваш лучший выбор, вероятно, это использовать ВНЕШНИЙ СТОЛ. Этот ответ AskTom в основном дает вам все необходимое: AskTom . Тем не менее, чтобы настроить его для вашего вопроса. Вы можете взять имеющуюся у вас информацию, сохранить ее в формате CSV и загрузить ее следующим образом.

CREATE TABLE new_names (id NUMBER(10) PRIMARY KEY, second_name VARCHAR2(50))
ORGANIZATION EXTERNAL
(type oracle_loader
 default directory data_dir
 access parameters ( fields terminated by ',' )
 location ('names.csv')
)
/

UPDATE (SELECT t.second_name empty_name, n.second_name loaded_name
        FROM table_name t
        INNER JOIN new_names n ON t.id = n.id)
SET empty_name = loaded_name;
/

Все, что вам нужно сделать, чтобы создать эту работу, - это создать каталог и поместить в него свой файл. После того, как вы закончите, вы можете удалить внешнюю таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...