Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql RODBC:合并来自不同数据库的表(通道)_Sql_R_Rodbc_Sqldf - Fatal编程技术网

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

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(

我正在使用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")
如果有人有一个想法,这将是非常有帮助的!非常感谢


莱昂内尔这个问题与这个问题相似。答案似乎是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。