如何在R中从Postgres数据库列出表而非视图?

6
?DBI::dbListTables中,我们可以读到:

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

实际上确实是这样的。
但我怎么才能只看到表,而排除视图呢?
如果有影响,我正在使用RPostgres :: Postgres()驱动程序。

2
使用这些查询,如何使用dbGetQuery来获取视图 - tonytonov
从Tony的链接中可以得到以下代码:dbGetQuery(con, "SELECT * FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE'") - user2957945
这似乎是一个不错的方法。如果你想把它作为答案添加,我会接受它。你知道table_type可能有哪些不同的值吗? - moodymudskipper
1
我有点晚了,那里已经有一个很好的答案了,这对我来说没问题。 - tonytonov
1个回答

3

我建议使用系统目录视图pg_tables查看表:

dbGetQuery(con, "SELECT * FROM pg_tables")

手册:

视图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设置出现问题。请参考以下链接:pg_views用于视图-如果您需要。
dbGetQuery(con, "SELECT * FROM pg_views")

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接