查詢全庫所有表各表總記錄數 PG版本

2021-09-29 14:42:27 字數 1998 閱讀 8032

--建立函式

create or replace function public.querytablerecord(dbname varchar(300), schema_prefix varchar(300))

returns "pg_catalog"."void" as $body$

declare

schemaqueryrec record;

tablequeryrec record;

querysql varchar(900);

insertsql varchar(300);

tmpsql varchar(300);

begin

--1.建立臨時表

drop table if exists public.tmp_big_table_record;

create table public.tmp_big_table_record(

schemaname varchar(300),

tablename varchar(300),

rowcount numeric(19)

);insertsql := 'insert into public.tmp_big_table_record ';

--2.生成各schema的查詢指令碼

for schemaqueryrec in

select

'select ''select ''''' || schema_name || ''''','''''' || tablename || '''''' , count(*) from '' || schemaname || ''.'' || tablename || '' union all'' as ssql from pg_tables where schemaname = ''' || schema_name || '''' as query_sql

from

information_schema.schemata

where

catalog_name = dbname

and schema_name like schema_prefix || '%' loop

querysql := schemaqueryrec.query_sql;

--列印每個模式的查詢指令碼到控制台

raise notice 'notice: %', querysql;

for tablequeryrec in execute querysql loop

--如果查詢結果為空,則不處理

if length(tablequeryrec.ssql) > 0 then

--去除最後乙個union all

tmpsql := substring(tablequeryrec.ssql, 1, length(tablequeryrec.ssql) - 9);

--拼接insert語句

tmpsql := insertsql || tmpsql;

--執行指令碼

execute tmpsql;

end if;

end loop;

end loop;

raise notice 'job done!!!';

end$body$

language 'plpgsql' volatile

;alter function public.querytablerecord(dbname varchar(300), schema_prefix varchar(300)) owner to artbase;

--執行函式

select public.querytablerecord('fb09', 'db_');

--檢視結果

select * from public.tmp_big_table_record order by rowcount desc;

--刪除臨時表

drop table public.tmp_big_table_record;

oracle查詢所有表的記錄數

方法一 select t.table name,t.num rows from all tables t 檢視記錄數,但是num rows不是實時的,儲存的是上次分析後的值,不準確,要使用該方法,必須分析後才可以使用。方法二 1 建立函式 create orreplace function coun...

MySQL 查詢資料庫 資料表總記錄數

information schema資料庫是mysql系統自帶的資料庫,它提供了資料庫元資料的訪問方式。information schema就記錄了資料庫當中大部分基本的資訊,比如字符集,許可權相關,資料庫實體物件資訊,外檢約束,分割槽,壓縮表,表資訊,索引資訊,引數,優化,鎖和事物等等。通過inf...

MSSQL 如何高效查詢表的總記錄數

如何高效查詢表的總記錄數?總結 整理 馬克 首先想到的自然是在表主鍵上應用count函式來查詢了,這個是目前使用最多的方法,沒有之一 select count 1 rows from product 這裡再給出一些其它方法,這些方法或多或少會有一些限制,或者看起來不是那麼 完美 但依然有一定的借鑑意...