У нас есть большой дамп PostgreSQL с сотнями таблиц, которые я могу успешно импортировать с помощью pg_restore. Мы разрабатываем программное обеспечение, которое вводится во многие из этих таблиц (~ 100), и для каждого прогона нам нужно вернуть эти таблицы в исходное состояние (это означает, что содержимое было на дампе). Восстановление исходного дампа снова занимает много времени, и мы просто не можем ждать полчаса перед каждой сессией отладки. Поэтому мне нужен относительно быстрый способ вернуть эти таблицы в состояние, в котором они находятся, после восстановления с дампа.PostgreSQL восстанавливает таблицы в исходное состояние
Я попытался использовать pg_restore с ключом -L и выбирая эти таблицы, но получаю либо дублируемую ключевую ошибку при использовании как -data-only, так и -clean или «не может отбросить таблицу X, потому что другие объекты зависят от это "ошибка при использовании только --clean. Выдача команды SET CONSTRAINTS ALL DEFERRED до того, как pg_restore тоже не работает. Может быть, у меня есть строки в списке таблиц все не так, сейчас это
491; 1259 39623998 TABLE public some_table some_user
8021; 0 0 COMMENT public TABLE some_table some_user
8022; 0 0 ACL public some_table some_user
для каждой таблицы, а затем
6700; 0 39624062 TABLE DATA public some_table postgres
8419; 0 0 SEQUENCE SET public some_table_pk_id_seq some_user
для каждой таблицы.
Мы вставляем данные и не обновляем существующие строки, поэтому удаление всех строк над индексом и сброс последовательности могут работать, но я действительно не хочу, чтобы вручную создавать эти команды для всех сто таблиц, а я «Даже не уверен, что это сработает, даже если я установлю каскад для удаления других объектов в зависимости от данной строки.
У кого-нибудь есть идея, как справиться с этим?
Спасибо, создайте базу данных с помощью решения шаблона, добравшись до двух минут, что приемлемо. Я буду продолжать пытаться, потому что таблицы, которые нам нужно переделать, небольшие по размеру, поэтому выборочное падение и создание могут быть еще быстрее. Я отправлю его, если найду лучший способ. –