【问题标题】:How can I list tables but not views from a Postgres DB, using R?如何使用 R 列出来自 Postgres DB 的表而不是视图?
【发布时间】:2020-06-14 19:47:05
【问题描述】:

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

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

确实如此。

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

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

【问题讨论】:

  • dbGetQuerytablesviews 的这些查询怎么样?
  • ...所以来自 Tony 的链接:dbGetQuery(con, "SELECT * FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE'")
  • 这似乎是一种巧妙的方法。如果您想将其添加为答案,我会接受。你知道table_type有哪些不同的可能值吗?
  • 我有点晚了,那里已经有一个很好的答案,我很好。

标签: r postgresql dbi


【解决方案1】:

我建议系统目录视图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 设置混乱。见:

pg_views 用于查看 - 如果您需要:

dbGetQuery(con, "SELECT * FROM pg_views")

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

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 2020-03-06
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多