如何使用R列出Postgres DB中的表而不是视图?

ktca8awb  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(100)

?DBI::dbListTables中,我们可以读到:
这应该包括视图和临时对象
的确如此。
我怎么能只看到表,不包括视图呢?
我使用的驱动程序RPostgres::Postgres(),如果它的问题。

t9eec4r0

t9eec4r01#

对表使用系统目录视图pg_tables

dbGetQuery(con, "SELECT * FROM pg_tables")

字符串
The manual:
视图pg_tables提供了对数据库中每个表的有用信息的访问。
不包含视图、实体化视图或临时表,仅包含常规表(包括UNLOGGED表)。请参阅:

  • 如何检查给定模式中是否存在表

您可能希望排除系统表,只检索架构和表名:

dbGetQuery(con, "SELECT schemaname, tablename FROM pg_catalog.pg_tables WHERE schemaname !~ '^pg_' AND schemaname <> 'information_schema'")


我为目录表pg_catalog.pg_tables添加了显式的模式限定。通常不需要,但可以防止混乱的search_path设置。请参阅:

  • search_path如何影响标识符解析和“当前模式”

pg_views用于视图-如果您需要:

dbGetQuery(con, "SELECT * FROM pg_views")


视图pg_views提供了对有关数据库中每个视图的有用信息的访问。

相关问题