首页 > 解决方案 > SAS 用户需要帮助!如何在单个 SQL 语句中连接来自不同数据库源的 R 或 Python 表?

问题描述

[善良——我的第一篇文章] 在 SAS 中,您可以构建指向不同数据源的库,如 Oracle 或 SQL Server(或文件!)。因此,例如,我们可能有;

proc sql;
create table TABLE1 as
select a.student_id, a.class_standing, b.ethnicity
from STUDENT.enrollment as a left join IIR.person as b on a.id=.b.id
quit;

“STUDENT”是 SQL Server 数据库,“IIR”是 Oracle 数据库。SAS 库设置允许我们在同一个查询中混合不同的源。

你如何在 R 或 Python 中做到这一点?我可以通过 R 和 Python 连接我们的数据,但我正在寻找这种集成。谢谢!

标签: pythonrsas

解决方案


在 R 中,您可以使用DBI连接到每个 SQL 数据库,然后使用dplyrwith联合对它们进行操作dbplyr。关键是用于tbl()引用来自给定远程连接的表或查询。

我显然无法对此进行测试,但总体思路应该可行。查看https://db.rstudio.com/了解更多详细信息/有关连接到特定数据源的帮助。SQL Server 有一个部分,Oracle 有另一个部分。

library(dplyr)
library(dbplyr)
library(DBI)

conSTUDENT <- dbConnect([YOUR CONNECTION PARAMATERS])
conIIR <- dbConnect([YOUR CONNECTION PARAMATERS])

TABLE1 <- tbl(conSTUDENT, "enrollment") %>% 
  select(student_id, class_standing, ethnicity) %>% 
  left_join(tbl(conIIR, "person"), by = c("a.id" = ".b.id")) %>% 
  # you may or may not want collect() depending on what you are doing
  # this triggers the data pull from the server
  collect()

dbDisconnect(conSTUDENT)
dbDisconnect(conIIR)

推荐阅读