На сайте каждую ночь создается дамп базы (в простом текстовом формате):
sudo -u postgres pg_dump ${DB} | gzip > ../backup/`date +%Y-%m-%d`.${DB}.sql.gz
Редакторы на сайте случайно снесли часть записей. Вроде бы не страшно - есть бэкап от 26-го числа, но как назло 27-го и 28-го на сайте пользователи понадобавляли еще много записей.
Теперь нужно в базу от 28-го числа (с новыми записями, но без старых нужных) как-то вернуть стертые данные, которые есть в базе от 26-го (но нет новых данных, добавленных юзерами).
Подскажите, как это сделать?
PS. Так как при прямом накатывании на существующую базу (думал, а вдруг получится), сыплются ошибки, то я написал парсер дампа на Питоне и могу формировать построчные записи типа
COPY table1 (id, поля... ) FROM stdin;
1 данные для полей
\.
COPY table1 (id, поля...) FROM stdin;
2 данные для полей
\.
чтобы по одной строчке данные пытаться впихнуть в существующую базу, но тоже база мало чего прожевала, в основном все выплевывает назад с ошибкой "Ключ уже существует".
В качестве кривого решения мне видится создание отдельной базы от 26-го и из нее через Питон выбирать объекты и складывать в базу от 28-го программно. Но это еще сидеть полдня кодить.
Как вообще "красиво" такая задача решается только средствами PostgreSQL? Ведь решается же?