Pull to refresh

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

Tags:
Total votes 3: ↑2 and ↓1+1
Comments6

Articles