Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посчитать количество записей во всех таблицах? / 6 сообщений из 6, страница 1 из 1
10.02.2016, 11:51
    #39167418
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
Как посчитать количество записей в каждой таблице базы? типа такого:

таблица1 количество1
таблица2 количество2
...
таблицаН количествоН
...
Рейтинг: 0 / 0
10.02.2016, 12:10
    #39167449
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
Winnipuh,

если примерное число записей устроит, то можно из pg_class взять или из pg_stat_user_tables (значения могут быть разные):

Код: sql
1.
2.
3.
4.
5.
6.
select relname, reltuples from pg_class c
left join pg_namespace n on (n.oid = c.relnamespace)
where nspname not in ('pg_catalog', 'information_schema') and
  nspname !~ '^pg_toast' and relkind IN ('r');

select schemaname, relname, n_live_tup from pg_stat_user_tables;



если точное нужно - то хранимкой считать.
...
Рейтинг: 0 / 0
10.02.2016, 13:44
    #39167577
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
AlexiusWinnipuh,

если примерное число записей устроит, то можно из pg_class взять или из pg_stat_user_tables (значения могут быть разные):

Код: sql
1.
2.
3.
4.
5.
6.
select relname, reltuples from pg_class c
left join pg_namespace n on (n.oid = c.relnamespace)
where nspname not in ('pg_catalog', 'information_schema') and
  nspname !~ '^pg_toast' and relkind IN ('r');

select schemaname, relname, n_live_tup from pg_stat_user_tables;



если точное нужно - то хранимкой считать.

мне нужно сравнивать, хотелось бы точное, одним запросом или вызовом функции
...
Рейтинг: 0 / 0
10.02.2016, 13:53
    #39167590
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
Нашел такое

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE FUNCTION rowcount_all(schema_name text default 'public')
  RETURNS table(table_name text, cnt bigint) as
$$
declare
 table_name text;
begin
  for table_name in SELECT c.relname FROM pg_class c
    JOIN pg_namespace s ON (c.relnamespace=s.oid)
    WHERE c.relkind = 'r' AND s.nspname=schema_name
  LOOP
    RETURN QUERY EXECUTE format('select cast(%L as text),count(*) from %I.%I',
       table_name, schema_name, table_name);
  END LOOP;
end
$$ language plpgsql;
...
Рейтинг: 0 / 0
10.02.2016, 23:10
    #39168101
mini.weblab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
Winnipuh,

ты должен знать как получить

1) названия всех таблиц, принадлежащих определенной схеме
2) имена и свойства всех полей отдельной таблицы

спасибо
...
Рейтинг: 0 / 0
11.02.2016, 10:06
    #39168282
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать количество записей во всех таблицах?
Winnipuhхотелось бы точноепонятие точности опирается на конситентность, для чего придется залочить изменения во всей базе, пока считаются каунты и принимается решение на основе полученных значений.
в противном случае нет смысла говорить о "точности", статистические данные предполагают доверительную погрешность.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посчитать количество записей во всех таблицах? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]