我正在尝试迭代Python中的Postgresql数据库的所有表,以在每个表中执行查询。我需要获取每个模式的模式和表名来执行查询,所以我想得到一个像这样的字符串列表:“schema.tablename”。
我已经使用了它,但它只列出了表的名称,所以没有用。
select relname from pg_class where relkind='r' and relname !~ '^(pg_|sql_)';
我确信必须有一个更简单的方法,但我一直在找一些没有成功的东西......
感谢任何帮助,谢谢!
答案 0 :(得分:1)
你想加入pg_namespace:
t=# select nspname||'.'||relname from pg_class join pg_namespace on relnamespace = pg_namespace.oid where relkind='r' and relname !~ '^(pg_|sql_)' limit 5;
?column?
-------------------
public.s141
public.events
public.tg_rep_que
public.t4
public.menupoint
(5 rows)
答案 1 :(得分:1)
select
relname,
oid::regclass as full_name,
relnamespace::regnamespace as schema_name
from pg_class
where relkind='r';
请注意,它不会将架构名称附加到search_path
参数提供的表格,因此您可以使用上述查询中的schema_name
列。