Пакетная обработка Oracle - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно обновить 2 миллиона записей в БД, и для этого мне нужно обновить его в пакетном режиме.Например, сначала обновите пакетное обновление 500 КБ, а затем выполните коммит, а затем выполните другое пакетное обновление 500 КБ.

Кто-нибудь может мне помочь с примерами пакетного обновления?

Запрос на обновление:

UPDATE "user" 
  SET cosid = 10
where msisdn_1 not in (SELECT C_MSISDN 
                       FROM SBM_SUBSCRIPTION a, 
                            SBM_SUBSCRIBER b 
                       WHERE a.N_SUBSCRIBER_ID=b.N_ID)

1 Ответ

0 голосов
/ 12 июня 2018

Мне нравится этот способ обновления, когда мне приходится периодически делать коммиты, чтобы избежать проблем с откатом / повтором

число строк sql% будет содержать количество обновленных строк, когда оно достигнет 0, вы знаете, что все ваши строки имеютбыло обновлено

Значение rownum <1000 является лишь примером. Вы можете увеличить его в зависимости от размера отката / повторного выполнения </p>

, чтобы пройти через таблицу для каждого цикла, поэтому попробуйтеэто большее число, если вы можете

begin
   loop
      update x set yyy=zzz where bb=cc and rownum < 1000;
      exit when sql%rowcount = 0;
      commit;
   end loop;
   commit;
end;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...