Назад | Перейти на главную страницу

Слияние дампа Postgresql с производственной базой данных

У меня есть база данных postgresql, в которой потеряны некоторые записи. Я хочу взять дамп SQL pg_dump базы данных, сделанный несколько дней назад, и объединить его с текущей производственной базой данных. Многие записи будут дублироваться, поэтому дубликаты можно пропустить. Как лучше всего это сделать?

patch может быть, вы, друг, могли бы попробовать создать новый дамп, мы назовем его current_dump и сделаем diff против old_dump затем используйте

   diff old_dump new_dump > patch.input
    (copy the new_dump) to another file at this point new.db.dump)
    patch new.db.dump patch.input

Возможно, вам придется отсортировать файлы дампа перед выполнением сравнения, и в зависимости от размера вашей базы данных это может быть нецелесообразно.

Также будьте очень осторожны и делайте это с резервной копией, пока не будете уверены в ее правильности.

В противном случае, возможно, есть инструменты типа ETL, которые могут это сделать.

Не зная, с каким дампом вы работаете (простой, tar или кастомный) ...

Если у вас есть dblink, вы можете выполнить восстановление в другую базу данных и перетащить данные в производственный блок.

Более запутанным решением может быть

  1. восстановить дамп в другую базу данных,
  2. измените имена схемы / таблицы, чтобы они не конфликтовали ни с чем в производственной базе данных,
  3. выгрузите переименованные таблицы и используйте этот дамп для получения переименованных таблиц в производственной базе данных.
  4. После всего этого вы можете использовать простой SQL для поиска / вставки недостающих данных.