PostgreSQL | SQL-скрипт | Для получения подробного описания таблиц (в виде таблицы) | для системных аналитиков

Многие системные аналитики, приходя на проект, сталкиваются с проблемой что PostgreSQL БД уже создана ранее, а описания таблиц нет, да и доступ к ней дадут не скоро.
В итоге когда дают доступ, начинается анализ каждой из таблиц, чтобы перенести в документацию ее описание.
Я задался вопросом: "Можно ли сразу выгрузить все описания таблиц разом?" Оказывается можно, держите готовый скрипт для postgreSQL:
-- Скрипт получения информации о таблицах БД
SELECT
-- Наименование БД
current_database() as "Наименование БД",
-- Схема данных
current_schema as "Схема данных",
-- Наименование таблицы
relname as "Наименование таблицы",
-- Описание таблицы
obj_description(oid) as "Описание таблицы",
-- Наименование поля/столбца
column_name as "Наименование поля/столбца",
-- Тип данных
CASE
when character_maximum_length is not null
and udt_name = 'varchar' then concat(
udt_name :: varchar(255),
'(',
character_maximum_length :: varchar(255),
')'
)
else udt_name
end as "Тип данных",
-- Описание поля/столбца
col_description(oid, ordinal_position) as "Описание поля/столбца"
FROM
pg_class as a
right join information_schema.columns as b ON b.table_name = a.relname
-- WHERE
-- relname='<наименование таблицы>'
На выходе получим классное описание, которое сможем включить в документацию (например):
| Наименование БД | Схема данных | Наименование таблицы | Описание таблицы | Наименование поля/столбца | Тип данных | Описание поля/столбца |
| --------------- | ------------ | -------------------- | ------------------------------------------- | ------------------------- | ------------- | -------------------------------------- |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | table_id | uuid | Идентификатор записи в таблице shops |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | partner_short_name | varchar(1000) | Краткое наименование компании партнера |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | offers_sales_notes | varchar(50) | Условия продажи товара |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | url | varchar(2048) | URL главной страницы |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | company | varchar(1000) | Полное наименование компании |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | name | varchar(1000) | Короткое наименование компании |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | created_at | timestamp | Дата создания записи (в БД) |
| sandbox_db | public | shops | Информация о поставщиках услуг (справочник) | is_actual | bool | Признак актуальности записи (в БД) |
----
P.s.Плюсы приветствуются, а если уж минусите, то хоть коммент напишите, что не так!
----
Связь со мной: https://t.me/antzim_in
Почитать мой телеграмм: https://t.me/sa_chulan