Show All Rows On All Table in Postgresql



Berikut cara membuat dan mengetahui semua rows yang ada dalam table, khususnya semua table yang ada didalam database tertentu.

1. Masuk kedalam database yang diinginkan

root@rizky:~# su - postgres
postgres@rizky:~$ psql -p 5432 -d postgres -U postgres -c "CREATE DATABASE TEST;"
postgres@rizky:~$ psql -p 5432 -d test
psql (9.3.4)
Type "help" for help.

test=#

2. Jalankan perintah create function di dalam database yang diinginkan.

test=# create function
cnt_rows(schema text, tablename text) returns integer
as
$body$
declare
result integer;
query varchar;
begin
query := 'SELECT count(1) FROM ' || schema || '.' || tablename;
execute query into result;
return result;
end;
$body$
language plpgsql;

3. Jika sudah terbuat, coba lakukan select dengan query dibawah ini

test=#select
table_schema,
table_name,
cnt_rows(table_schema, table_name)
from information_schema.tables
where
table_schema not in ('pg_catalog', 'information_schema')
and table_type='BASE TABLE'
order by 3 desc;

table_schema | table_name | cnt_rows
--------------+------------+----------
public | company2 | 2
public | company | 1
(2 rows)

test=#

#perlu diperhatikan, function dibuat dan berlaku hanya di database yg memiliki function ini. diluar dari yg tidak memiliki function ini tidak akan bisa melakukan query select untuk mengecek semua rows dengan menggunakan perintah ini. melainkan gunakan perintah union.

Adapun perintah dengan menggunakan union adalah:

root@rizky:~# su – postgres
postgres@rizky:~$ psql -p 5432 -d test -U postgres -c "select count(1) from company union all select count(1) from company2;"

count
-------
1
2
(2 rows)
postgres@rizky:~$


Terima Kasih

Comments