Убедитесь, что база данных PostgreSQL является новой - PullRequest
2 голосов
/ 27 сентября 2011

Есть ли "простой способ" проверить, что база данных новая и не имеет каких-либо изменений?Когда я имею в виду новую базу данных, я имею в виду недавно созданную базу данных (например, создаем базу данных newdb) Возможно, используя psql для выполнения некоторого оператора SQL для проверки информации в pg_catalog

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Я думаю, что самый простой способ - сравнить дамп sql обеих баз данных (неявным шаблоном является template1):

pg_dump -Fp -f templatedb.sql template1
pg_dump -Fp -f mydb.sql mydb
diff templatedb.sql mydb.sql

Обратите внимание, что template1 db имеет свой собственный комментарий:

COMMENT ON DATABASE template1 IS 'Default template database';
0 голосов
/ 27 сентября 2011

Без дополнительных исследований я предлагаю следующий запрос

SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','S','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

Это запрос, который psql использует для отображения содержимого команды \d. Если результат этого запроса ничего не значит, то база данных не имеет таблиц, представлений, ... Я предполагаю, что пустая база данных является признаком вновь созданной базы данных. Обратите внимание, что результат запроса выше исключает pg_catalog, поэтому изменения в настройках и т.п. не будут возвращены.

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