Как pg_restore только таблицы в Rails schema.rb - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть файл pg dump и приложение Rails с пустыми таблицами. Мне нужно восстановить дамп ТОЛЬКО В ТАБЛИЦЫ, КОТОРЫЕ УЖЕ ЕСТЬ при попытке заполнить дочернюю таблицу до того, как ее родительские записи существуют, данные не заполняются.

В качестве альтернативы, используя параметры --if-exists --clean, создаются новые таблицы в базе данных для всего в файле дампа. (Теперь я понимаю, что --if-exists просто означает удаление любой существующей таблицы перед заполнением, это не мешает созданию новых таблиц)

Мое чтение параметров pg_restore заключается в том, что это невозможно. Если да, есть ли способ удалить все таблицы в базе данных, которые не указаны в schema.rb? Либо через приложение Rails или из linux (SSM'ing в AWS EC2, подключенный к RDS)? Это позволило бы мне запустить pg_restore, а затем удалить дополнительные таблицы.

Спасибо!

1 Ответ

0 голосов
/ 02 февраля 2020

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

Итак, команда для создания файла дампа таблицы

pg_restore --data-only --table=tablename fulldumpfilename.dump > onetablefilename.dump

Расширения файлов также может быть pg Я считаю, мой был .dump, поэтому я сохранил это для нового файла. Также настройте пути, чтобы они соответствовали расположению ваших файлов.

Затем вы можете импортировать эту таблицу с помощью обычной команды

psql destdb < onetablefilename.dump

Может быть не лучшим решением, если у вас много таблиц, я только несколько из них, и это позволило мне извлечь их, импортировать, а также контролировать порядок, в котором они go in.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...