You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中使用dm包查看PostgreSQL数据库指定Schema的ERD

如何用dm包在RStudio中仅绘制指定Schema的ERD

当使用dm_from_con()连接PostgreSQL数据库时,它默认会加载所有可见Schema中的表——仅设置search_path无法限制dm对象只包含目标Schema的表。要仅查看survey_data Schema的ERD,你需要在创建dm对象后,筛选出该Schema下的所有表,再调用dm_draw()。

修改后的代码

if (!require(librarian)){
  install.packages("librarian")
  library(librarian)
}
librarian::shelf(dm, tidyverse, DBI, RPostgres, DiagrammeR)

connection <- dbConnect(drv = dbDriver("Postgres"),
                        dbname = Sys.getenv("aws_dbname"),
                        host = Sys.getenv("aws_host"),
                        port = Sys.getenv("aws_port"),
                        user = Sys.getenv("aws_user"),
                        password = Sys.getenv("aws_password")) 

# 创建完整dm对象后,筛选出survey_data Schema下的表
survey_data <- dm_from_con(connection) %>%
  filter(tbl_schema == "survey_data")

# 绘制目标Schema的ERD
survey_data %>% 
  dm_draw(view_type = "all", graph_name = 'survey_data')

关键说明

  • dm对象内置元数据列tbl_schema,直接用filter()筛选该列等于目标Schema名称,就能精准保留需要的表。
  • 也可以用dm_select_tables(tidyselect::starts_with("survey_data."))实现相同效果,原理是PostgreSQL中表的完整标识为schema_name.table_name,通过前缀匹配选中目标Schema的所有表。
  • 无需额外设置search_path,因为我们已经通过筛选明确限定了表的范围,避免其他Schema的表干扰。

内容的提问来源于stack exchange,提问作者Eizy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:40:16