2016-12-05 122 views
0

我正在學習postgres。我有很多表,如果表是非空的,是否有命令列出所有表中的所有行?查看所有表格中所有表格中的所有條目/數據

這些表稱爲test.test_ *(其中*是其他類似test.test_abc,test.test_bcd等)。我可以在python中逐一查詢表,看看它們是否控制任何數據,但是有沒有任何postgres命令?喜歡的東西

SELECT * FROM test.test_* IF pg_size_pretty(pg_relation_size('test.test_*')) >0;

謝謝!

回答

1
  1. 通過文檔pg_relation_size

Disk space used by the specified fork ('main', 'fsm', 'vm', or 'init') of the specified table or index

磁盤空間=行數。例如:

b=# create table empty (i int); 
CREATE TABLE 
b=# select pg_relation_size('public.empty'); 
pg_relation_size 
------------------ 
       0 
(1 row) 

b=# insert into empty select 1; 
INSERT 0 1 
b=# select pg_relation_size('public.empty'); 
pg_relation_size 
------------------ 
      8192 
(1 row) 

b=# delete from empty ; 
DELETE 1 

b=# select count(*) from empty; 
count 
------- 
    0 
(1 row) 

b=# select pg_relation_size('public.empty'); 
pg_relation_size 
------------------ 
      8192 
(1 row) 
  • pg_size_pretty返回文本,所以比較應該給你:
  • ERROR: operator does not exist: text > integer

  • IF是PLPGSQL語句。對於SQL您應該使用CASE,但在您的聲明中,您應該使用所有WHEREselect * from tname WHERE number_of_rows > 0
  • 儘管如此,您的問題有一個肯定的答案。這是可行的。和你在Python中循環一樣,你可以將它循環到DO plpgsql塊中。