2015-02-24 91 views
0

我想遍歷數據庫中的每個表,並打印它的行數。做一個Postgres for循環,從每個表中選擇數據

我可以獲取所有表名,但我不知道如何遍歷它們,將SELECT COUNT(*)分配給它的表。

-- Get all tablenames 
SELECT relname 
FROM pg_stat_user_tables 

示例結果

table_name  row_count 
------------- ------------- 
users   321 
questions  807 
comments  3,145 
tags   58 
... 

注: 我知道你可以使用pg_stat_user_tables讓每一個表中的行數,但我希望看到一個 「Hello World」 的Postgres環,其選擇值。我找不到任何其他的在線問題或例子,這是簡化的。

+0

參見[你怎麼找到的行數Postgres裏所有的表(http://stackoverflow.com/questions/2596670) – 2015-02-24 19:59:33

+0

你指到@保羅的答案?如果您嘗試運行它,它不起作用。給出語法錯誤 – 2015-02-24 20:22:14

+0

不是特別的這個,但仔細閱讀所有這些答案,我很驚訝他們沒有一個對確切的計數有好處。我剛剛提交了[另一個](http://stackoverflow.com/a/28709658/238814)。 – 2015-02-25 01:39:49

回答

1

我相信你需要在PostgreSQL手冊中爲documented創建一個P1/SQL過程。

裏面你loop寫一樣的東西:

EXECUTE 'SELECT count(*) FROM ' || tabname::regclass;