2013-06-18 5 views
0

У нас есть большой дамп 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 

для каждой таблицы.

Мы вставляем данные и не обновляем существующие строки, поэтому удаление всех строк над индексом и сброс последовательности могут работать, но я действительно не хочу, чтобы вручную создавать эти команды для всех сто таблиц, а я «Даже не уверен, что это сработает, даже если я установлю каскад для удаления других объектов в зависимости от данной строки.

У кого-нибудь есть идея, как справиться с этим?

ответ

0

Итак, вы ищете что-то вроде моментального снимка, чтобы иметь возможность быстро вернуться в определенное состояние.

Я не знаю о возможности использования PostgreSql для отката к определенной отметке времени.

В поисках решения, я нашел две идеи here

  • Использования create database с опцией template
  • виртуализацией установки PostGreSQL с помощью VMWare или VirtualBox, а также использовать функцию моментальных снимков виртуальных машин ,

Опять же, обе идеи скопированы из приведенного выше источника (у меня есть поиск «моментальных снимков postgresql db»).

+0

Спасибо, создайте базу данных с помощью решения шаблона, добравшись до двух минут, что приемлемо. Я буду продолжать пытаться, потому что таблицы, которые нам нужно переделать, небольшие по размеру, поэтому выборочное падение и создание могут быть еще быстрее. Я отправлю его, если найду лучший способ. –

 Смежные вопросы

  • Нет связанных вопросов^_^