Как делить одну большую операцию на части - необходимо базе объяснять.
PG14 - нагенерировать запросов
update ... where ctid between '(N,1)' and '(N+1000,1)'
где N от 0 до relpages из pg_class и запустить.
Если хочется - можно обернуть в анонимку DO, каждую очередную итерацию делая commit.
На более старых версиях - выбрать какой-нибудь индекс скоррелированный с физическим расположением данных и идти вдоль него, нагенерировав запросов
update ... where somecolumn between ? and ?
кусками некоторого размера. Не имеет решающего значения соблюдение размера одного обновления, лишь бы выполнялся за разумное время.
Во время миграции поглядывайте, успевает ли autovacuum за вами, успевают ли реплики и archiver (если есть).