У меня есть файл дампа pg и приложение Rails с пустыми таблицами. Мне нужно восстановить дамп ТОЛЬКО В ТАБЛИЦЫ, КОТОРЫЕ УЖЕ СУЩЕСТВУЮТ (которые есть в schema.rb).
Проблема с параметрами --data-only --disable-triggers
для pg_restore
заключается в том, что при нарушении ссылочной целостности, например. при попытке заполнить дочернюю таблицу до того, как существуют ее родительские записи, данные не заполняются.
В качестве альтернативы, используя параметры --if-exists --clean
, он создает новые таблицы в базе данных для всего в файле дампа. (Теперь я понимаю, что --if-exists
просто означает сначала удалить любую существующую таблицу перед заполнением, это не предотвращает создание новых таблиц)
Насколько я понимаю параметры pg_restore, это невозможно. Если да, то есть ли способ удалить в базе данных все таблицы, которые не указаны в списке schema.rb
? Либо через приложение Rails, либо из Linux (SSM подключается к AWS EC2, подключенному к RDS)? Это позволило бы мне запустить pg_restore, а затем удалить лишние таблицы.
Спасибо!