2012-01-23 2 views
1

Я часто использую pg_dump для создания баз данных и сравнения их с diff. Чтобы избавиться от большинства «ложных срабатываний», я хотел бы установить pg_dump для сортировки таблицы, чтобы ее сбрасываемый порядок не был изменен больше, чем необходимо, с помощью вставок & Co.Получение списка атрибутов таблицы, сортируемых по уникальности

Так что я ищу запрос который вернет список атрибутов таблицы, которые могут быть отсортированы (например, без полей XML) и отсортированы по «уникальности», т.е. е. первые атрибуты, представляющие первичный ключ, затем другие уникальные ключи, затем остальные.

Перед тем, как погрузиться в глубины системных каталогов PostgreSQL, кто-нибудь уже решил эту проблему?

+0

хорошо ... насколько велики эти базы данных? –

+0

@SzymonGuz Типичный дамп моей частной базы данных - 400+ MByte. Почему это имеет значение? –

+0

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

ответ

1

Вы можете написать кучу запросов, как:

COPY (SELECT * FROM T ORDER BY ...) INTO t.csv 

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

Это намного проще, чем взломать pg_dump.

Все столбцы таблицы можно получить с помощью стандартного INFORMATION_SCHEMA:

select * from information_schema.columns; 
+0

Я знаю оба, но взломать pg_dump не так уж сложно, и меня не интересует список всех столбцов, но отсортированные по уникальности столбцы. –

+0

Итак, напишите правильный запрос. Я действительно не понимаю, почему вы хотите решить не существующие проблемы. С другой стороны: вы всегда можете загружать обе дампы в базу данных (400 МБ - это действительно небольшая база данных) и сравнить их с помощью множества простых запросов. –

+0

Эх, целью этого вопроса является _find_ правильный запрос. И когда я (или git или rdiff-backup или ...) хочу сравнить две дампы, загрузка их в базу данных намного больше работает (если это возможно), чем настройка pg_dump. Спасибо, в любом случае. –

Смежные вопросы