我正在使用RODBC软件包从R连接到Oracle数据库但是我没有成功合并来自不同数据库的表而没有“下载”表格(我不想下载它们因为它们太大了!) 。我想使用类似的东西:
DBa=odbcConnect(dsn="DatabaseA",uid="uid",pwd="pwd",readOnly="True")
DBb=odbcConnect(dsn="DatabaseB",uid="uid",pwd="pwd",readOnly="True")
sqldf("select a.year, sum(b.var) as sumVar
from sqlFetch(DBa,'tableA') a
sqlFetch(DBb,'tableB') b
where a.ID=b.ID
group by a.year")
如果有人有想法,那将会非常有帮助!非常感谢提前。
梅西
答案 0 :(得分:1)
此问题类似于问题here。答案似乎是RODBC无法使用sqlQuery(...)
在单个查询中访问两个不同的数据库,因为连接(通道)是特定于数据库的。所以要么
(1) do it using downloads (as in your code), or
(2) have your DBA put both tables in a single database, or
(3) use something other than R.
答案 1 :(得分:0)
在Netezza中,使用sqlQuery函数可以正常工作。
require("RODBC")
ch <- odbcConnect("NZSQL")
dim.cust.acc1 <- sqlQuery(ch,"Select * from DB1..DIM_ACCOUNT a inner join DB2..BASE_201707 b on a.id_number=b.id_number limit 1000",believeNRows = FALSE)
答案 2 :(得分:0)
我不能评论其他答案或给@abdul mohammad 点赞,但他是对的。我刚刚做了一个复杂的查询,最多可以合并 4 个不同的数据库。检查你的语法。您可以调用不同的数据库,例如
select * from TableInTheConnection A
left join [server ip].TableInOtherConnection B
...