2016-12-05 10 views
0

Ich lerne Postgres. Ich habe viele Tabellen, gibt es einen Befehl zum Auflisten aller Zeilen in allen Tabellen, wenn die Tabelle nicht leer ist?Alle Einträge/Daten in allen Tabellen in allen Tabellen anzeigen

Die Tabellen heißen test.test_ * (wobei * etwas anderes ist wie test.test_abc, test.test_bcd usw.). Ich kann die Tabellen einzeln in Python abfragen und sehen, ob sie irgendwelche Daten kontrollieren, aber gibt es einen Postgres-Befehl dafür? So etwas wie

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

Dank !!

Antwort

1
  1. von docs pg_relation_size:

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

Speicherplatz = Anzahl der Zeilen. zB:

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) 
  1. pg_size_pretty Text zurückgibt, so Vergleich sollte Ihnen:

ERROR: operator does not exist: text > integer

  1. IF ist plpgsql Aussage . für SQL sollten Sie CASE verwenden, aber in Ihrer Aussage sollten Sie überhaupt verwenden WHERE (select * from tname WHERE number_of_rows > 0)
  2. Trotzdem hat Ihre Frage eine positive Antwort. Es ist machbar. Wie Sie es in Python Schleife, können Sie es innerhalb DO Plpgsql blockieren.
Verwandte Themen