首页 > 解决方案 > Postgres,如何迭代访问数据库中的所有表,子查询?

问题描述

嗨 Postgres 社区:D

我正在尝试阅读表格的内容以掌握它们的图片。所以,我的问题是:如何在数据库中显示所有表头,给出与下面的天真整洁查询相同的结果。我想一定有一种奇特的方式只需要一行查询就可以做到这一点。请帮帮我!

# naive
SELECT * FROM mytable0001;
SELECT * FROM mytable0002;
SELECT * FROM mytable0003;
...
SELECT * FROM mytable9999;


# wannabe
SELECT * FROM foo (SELECT table_name FROM information_schema.tables) AS foo limit 5;

先感谢您!

标签: postgresql

解决方案


您可以尝试使用 psql CLI 和 \gexec 命令。使用以下输入:

select format('select * from %s;',tablename) 
from pg_tables
where tablename like 'table%'
\gexec

你一口气进入:

select format('select * from %s;',tablename) 
from pg_tables
where tablename like 'table%'
select * from table0001;
 c1 |   c2    
----+---------
  1 | table 1
(1 row)

select * from table0002;
 c1 |   c2    
----+---------
  1 | table 2
  2 | table 2
(2 rows)

select * from table0003;
 c1 |   c2    
----+---------
  1 | table 3
  2 | table 3
  3 | table 3
(3 rows)

推荐阅读