如何使用 R 列出 Postgres 数据库中的表但不列出视图?

Moo*_*per 7 postgresql r dbi

?DBI::dbListTables我们可以读到:

这应该包括视图和临时对象

确实如此。

我怎样才能只看到表格,不包括视图?

RPostgres::Postgres()如果重要的话我正在使用驱动程序。

Erw*_*ter 3

pg_tables使用表的系统目录视图:

dbGetQuery(con, "SELECT * FROM pg_tables")
Run Code Online (Sandbox Code Playgroud)

手册:

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

不包含视图、物化视图或临时表,仅包含常规表(包括UNLOGGED表)。看:

您可能希望排除系统表并仅检索架构和表名称:

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

我为目录表添加了显式架构限定:pg_catalog.pg_tables。通常没有必要,但可以防止设置混乱search_path。看:

pg_views获取视图 - 如果您需要:

dbGetQuery(con, "SELECT * FROM pg_views")
Run Code Online (Sandbox Code Playgroud)

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