Sql RODBC:合并来自不同数据库的表(通道)
我正在使用RODBC包从R连接到Oracle数据库,但是在没有“下载”表的情况下,我没有成功地合并来自不同数据库的表(我不想下载它们,因为它们太大了!)。我想使用类似于:Sql RODBC:合并来自不同数据库的表(通道),sql,r,rodbc,sqldf,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(
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")
如果有人有一个想法,这将是非常有帮助的!非常感谢
莱昂内尔这个问题与这个问题相似。答案似乎是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.
在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)
require(“RODBC”)
我不能评论其他的Answare或upvote@abdul mohammad,但他是对的。我刚刚做了一个复杂的查询,合并了4个不同的数据库。检查你的sintax。您可以调用不同的数据库,如
select * from TableInTheConnection A
left join [server ip].TableInOtherConnection B
...
欢迎来到SO,如果您不能发表评论,请不要使用它的答案QLDF用于在数据帧上使用SQL。它使用一个数据库作为后端来完成这项工作,但它不是用于访问数据库的(尽管经过一些努力可以做到,但这不是预期的应用程序)。在任何情况下,它都不支持Oracle、RODBC或ODBC。它支持SQLite()、H2、MySQL和PostgreSQL。