Слияние дампа Postgresql с производственной базой данных - PullRequest
0 голосов
/ 01 сентября 2010

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

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

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

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

Вы можете переименовать таблицу, которую вы хотите исследовать, и сбросить / восстановить ее в базе данных, содержащей таблицу, потерявшую данные И затем, вы можете сделать SQL-запрос, как этот:

select * from foo where var1 not in (select var1 from foo_restored);
0 голосов
/ 02 сентября 2010

Вы можете попробовать ПРАВИЛА .Посмотрите на http://www.pointwriter.com/blog/index.php?/archives/6-REPLACE-in-PostgreSQL.html

Адаптируйте этот пример:

CREATE RULE "insert_ignore" AS
    ON INSERT TO "your_table"
    WHERE
      EXISTS(SELECT 1 FROM your_table WHERE key=NEW.key [...])
    DO INSTEAD
      NOTHING;

Это не проверено , поэтому попробуйте вместо этого в безопасной среде.

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