RODBC:合并来自不同数据库的表(频道)

时间:2013-12-03 15:44:01

标签: sql r rodbc sqldf

我正在使用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")

如果有人有想法,那将会非常有帮助!非常感谢提前。

梅西

3 个答案:

答案 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 
...