Postgres SQL команда, чтобы выяснить, какие столбцы могут быть перечислениями, но не являются? - PullRequest
0 голосов
/ 29 апреля 2020

Суть в том, что я создаю универсальный инструмент c, который может использовать разные базы данных клиентов и связывать его с внутренней панелью мониторинга. Поэтому в моем случае использования я часто сталкиваюсь с десятками столбцов varchar / int, которые, честно говоря, просто перечисляются.

Я ищу способ, чтобы мне не приходилось вручную просеивать каждый столбец и посмотрите, может ли это быть перечисление.

Существует ли команда, которая может автоматически обнаруживать перечисляемые столбцы в таблице

SQL: Select <column_name> FROM <table> WHERE <column_name> has maximum 10 distinct values

Или что-то еще, например над. Есть идеи?

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете использовать системный каталог статистики pg_stats, чтобы иметь оценку различных значений для данного столбца в данной таблице:

select schemaname, tablename, attname, n_distinct
from pg_stats 
where n_distinct > 0 and n_distinct <= 10;

Но это только оценка .

Обратите внимание, что для столбца n_distinct:

Если больше нуля, предполагаемое количество различных значений в столбце. Если меньше нуля, отрицательное число различных значений делится на количество строк. (Отрицательная форма используется, когда ANALYZE полагает, что число отдельных значений может увеличиваться по мере роста таблицы; положительная форма используется, когда столбец имеет фиксированное количество возможных значений.) Например, -1 указывает на уникальный столбец, в котором количество различных значений совпадает с количеством строк.

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