блокировка сама произойдет. И ему наверное нужно не удалить все, а потом залить по новому, а пачкой обновить лишь существующие цены. Но вариант тот же, временная таблица куда с помощью
load data загрузить новую пачку данных. Далее или по ИД или по двум другим полям удалить все записи из основной таблицы. удаление будет быстрое если есть индекс по сверяемым полям. Третьим этапом необходимо сделать инсерт по другой таблице.
У меня сейчас есть аналогичная ситуация, только база состоит из более 50 млн позиций, и каждый день может обновляться до 30 млн позиций. В начале я гружу csv файл во временную таблицу. Удаление идет по полю - производитель, наименование и потом инсерт. Все это дело на постгресе - время выполнения такой операции при 100 тысячах записей составляет менее секунды. Ничего не блокируется при этом