из одной таблицы 100млн записей (некоторые поля) в другую сохраняю может кто писал для этого функцию или процедуру? для записи по частям чтобы видеть статус процесса
А вы выборку из первой таблицы проверяли через EXPLAIN ANALYZE? Может там индексов не хватает (если не все строки вытаскиваете)
Нужно выбирать кусками (размер подберёте сами), фиксить тоанзакцию, и в другой сессии будет виден прогресс. Чтобы разбить данные на куски удобнее всего использовать оконную функцию ntile(num_buckets integer)
Делаете хранимую процедуру (не функцию!), в ней цикл с insert из select по кускам, и commit в каждой итерации.
ок, а как -то можно ответ каждого insert в вызывающий код отправлять?
Никак... писать в другую таблицу и мониторинг её.
Вообще-то можно. Insert into my table (...) returning into v_column.
Обсуждают сегодня