Сначала написал хранимую процедуру с использованием курсора (за основу взят код
отсюда), которая выполняет вставку-обновление (upsert), которая работала быстро. Но затем таки ради большего контроля над работой обновления написал программу. чтобы была возможность прервать процесс в случае перегрузки и продолжить с того же места.