在?DBI::dbListTables中,我们可以读到:这应该包括视图和临时对象的确如此。我怎么能只看到表,不包括视图呢?我使用的驱动程序RPostgres::Postgres(),如果它的问题。
?DBI::dbListTables
RPostgres::Postgres()
t9eec4r01#
对表使用系统目录视图pg_tables:
pg_tables
dbGetQuery(con, "SELECT * FROM pg_tables")
字符串The manual:视图pg_tables提供了对数据库中每个表的有用信息的访问。不包含视图、实体化视图或临时表,仅包含常规表(包括UNLOGGED表)。请参阅:
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_catalog.pg_tables
search_path
pg_views用于视图-如果您需要:
pg_views
dbGetQuery(con, "SELECT * FROM pg_views")
型视图pg_views提供了对有关数据库中每个视图的有用信息的访问。
1条答案
按热度按时间t9eec4r01#
对表使用系统目录视图
pg_tables
:字符串
The manual:
视图
pg_tables
提供了对数据库中每个表的有用信息的访问。不包含视图、实体化视图或临时表,仅包含常规表(包括
UNLOGGED
表)。请参阅:您可能希望排除系统表,只检索架构和表名:
型
我为目录表
pg_catalog.pg_tables
添加了显式的模式限定。通常不需要,但可以防止混乱的search_path
设置。请参阅:pg_views
用于视图-如果您需要:型
视图
pg_views
提供了对有关数据库中每个视图的有用信息的访问。