5

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

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

莱昂内尔

4

3 回答 3

1

这个问题与这里的问题类似。答案似乎是 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. 
于 2013-12-03T19:38:23.480 回答
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)
于 2017-08-30T09:28:18.677 回答
0

我无法评论其他答案或支持@abdul mohammad,但他是对的。我刚刚做了一个复杂的查询,最多合并了 4 个不同的数据库。检查你的sintax。您可以调用不同的数据库,例如

select * from TableInTheConnection A
left join [server ip].TableInOtherConnection B 
...
于 2021-05-28T15:39:07.050 回答