Доброго времени суток.
Создаю очередную памятку полезных запросов, к которым время от времени приходится обращаться. Возможно настолько редко, что без памятки не обойтись.
Запросы будут как самописные так и взятые из различны источников (во избежание изобретения велосипедов).
Пост будет постоянно расширяться.
Запросы под катом.
Список таблиц и полей.
Источник ТУТ
Список таблиц с указанием количества записей в каждой
*Результат запроса может быть неточным, если предварительно не произведен VACUUM выбираемых таблиц.
Ожидание завершения транзакции.
Если надо проверить была ли транзакция открыта явно (с помощью Begin), и находится ли наш бэкенд в ней. Т.е. она до сих пор еще не закрыта.
Источник ТУТ
Перечень индексов и ограничений.
Перечень представлений (view) с запросами.
Перечень последовательностей (sequence) в базе данных. Вариант 1.
Создаю очередную памятку полезных запросов, к которым время от времени приходится обращаться. Возможно настолько редко, что без памятки не обойтись.
Запросы будут как самописные так и взятые из различны источников (во избежание изобретения велосипедов).
Пост будет постоянно расширяться.
Запросы под катом.
Список таблиц и полей.
SELECT
t.table_name, c.column_name, c.data_type
FROM
information_schema.TABLES t
JOIN information_schema.COLUMNS c ON t.table_name::text = c.table_name::text
WHERE
t.table_schema::text = 'public'::text AND
t.table_catalog::name = current_database() AND
t.table_type::text = 'BASE TABLE'::text AND
NOT "substring"(t.table_name::text, 1, 1) = '_'::text
ORDER BY
t.table_name, c.ordinal_position;
Источник ТУТ
Список таблиц с указанием количества записей в каждой
SELECT
nspname, relname, reltuples
FROM
pg_class pc
inner join pg_namespace pn on pn.oid = pc.relnamespace
WHERE
relkind = 'r'::char and
nspname = 'public'
order by relname
*Результат запроса может быть неточным, если предварительно не произведен VACUUM выбираемых таблиц.
Ожидание завершения транзакции.
Если надо проверить была ли транзакция открыта явно (с помощью Begin), и находится ли наш бэкенд в ней. Т.е. она до сих пор еще не закрыта.
SELECT xact_start < query_start
FROM pg_stat_activity
WHERE procpid = pg_backend_pid();
Источник ТУТ
Перечень индексов и ограничений.
select
n.nspname, c.relname
from
pg_catalog.pg_class as c
left join pg_catalog.pg_namespace as n on n.oid = c.relnamespace
where
c.relkind = 'i' and
n.nspname not in ('pg_catalog', 'pg_toast')
order by
c.relname
Перечень представлений (view) с запросами.
SELECT *
FROM information_schema.views
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_name !~ '^pg_';
Перечень последовательностей (sequence) в базе данных. Вариант 1.
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';
Перечень последовательностей (sequence) в базе данных. Вариант 2.
select * from information_schema.sequences;
Перечень последовательностей (sequence) привязанных к автоинкрементным(serial, bigserial) полям таблиц.
select
sq.*
from
information_schema.tables tb
join
information_schema.columns cl on tb.table_name = cl.table_name
join
information_schema.sequences sq on position(quote_ident(sq.sequence_name) in cl.column_default) > 0
where
tb.table_schema = 'public'
and tb.table_type = 'BASE TABLE'
order by
tb.table_name, cl.column_name, sq.sequence_name;
Комментариев нет:
Отправить комментарий