Умные способы генерирования BLOB-объектов JSON из схемы базы данных PostgresSQL - PullRequest
0 голосов
/ 19 сентября 2019

Я ищу умные способы создания большого объекта json из нашей маленькой схемы базы данных postgresql.У кого-нибудь есть опыт в этом?Есть ли несколько простых запросов, которые мы можем написать в postgres?Я знаю, что JSON довольно хорошо поддерживается.Просто ищите имена таблиц, столбцы в этих таблицах и типы их столбцов.

Что-то вроде

{ "schema": [ {"books": 
{ "columns": [ { "id": {"type": "int"}... ] }}]}

Редактировать: Формат вывода не очень важен, просто ищите способы для генерацииJSON-объект схемы базы данных.

1 Ответ

0 голосов
/ 19 сентября 2019

Примерно так:

select jsonb_build_object(table_schema, 
                          jsonb_agg(jsonb_build_object(table_name, columns))) as schema_info
from (
  select t.table_schema, t.table_name, 
         jsonb_build_object('columns', jsonb_agg(jsonb_build_object(c.column_name, jsonb_build_object('type', c.data_type)) 
                                                 order by c.ordinal_position)
                           ) as columns
  from information_schema.tables t
    join information_schema.columns c 
       on c.table_schema = t.table_schema 
      and c.table_name = t.table_name
  where t.table_schema in ('public', 'foo', 'bar')
  group by t.table_schema, t.table_name
) t1
group by table_schema;

Это вернет одно значение JSON для каждой схемы, указанной во внутреннем предложении where.Вы можете дополнительно объединить их, если хотите.Возможно, вы также захотите немного изменить поиск данных, например, включить длину столбцов VARCHAR

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